React 入门

1.React 是什么

贴上官网的说明:A JavaScript library for building user interfaces

一般学习新框架可以从官网上找到文档开始看起。
在此贴上react官网链接 https://reactjs.org/

2.创建React项目

使用官方脚手架创建一个项目

  • 1.首先看环境有没有安装好
    node -v
    npm -v
  • 2.全局安装react命令
    npm install -g create-react-app
  • 3.创建项目
    create-react-app [项目名称]
  • 4.运行项目
    npm start/yarn start

3.React文件结构和JSX语法

    package.json->index.html->index.js->APP.js

4.React组件作用

  • 组件复用,提高开发速度

5.React组件通讯(属性传值)

  • 1.动态的值渲染通过一个大括号的形式

      const Person = () => {
        // return <p>web前端组,有(XXX)人</p>;
        return <p>web前端组,有{Math.round(Math.random() * 30)}人</p>;
      };
      export default Person;
    
  • 2.定义函数通过参数的方式去传值

  •       const Person = props => {
            // return <p>web前端组,有(XXX)人</p>;
            return (
              <p>
                {props.name},有{props.count}人
              </p>
            );
          };
    
    
              <Person name="web前端组" count="30" />
          定义一个props的形参去接收Person标签中传递过来的实参name,count。 在组件内部接收并赋值
    
  • 3.获取双标签中的内容

      <Person name="Java组" count="10">人间处处是真爱</Person>
    

    我们要拿到双标签的的内容可以通过children方法获取

      const Person = props => {
        return (
          <div>
            <p>
              {props.name},有{props.count}人
            </p>
            <p>{props.children}</p>
          </div>
        );
      };
      export default Person;
    

6.React-state状态使用

  • 1.state和props不同props是用来接收这个值,为state是用来改变这个值的状态
    类似Vue中的data

          class App extends Component {
            state = {
              person: [{ name: 'Android', count: 10 }, { name: 'DBA', count: 1 }, { name: 'Test', count: 40 }],
              otherState: 'anything'
            };
            render() {
              return (
                <div className="App">
                  {/* <header className="App-header">
                    <img src={logo} className="App-logo" alt="logo" />
                    <p>
                      Edit <code>src/App.js</code> and save to reload.
                    </p>
                    <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer">
                      Learn React
                    </a>
                  </header> */}
                  <h1>Hello World</h1>
                  <Person name={this.state.person[0].name} count="30" />
                  <Person name="ios组" count="20" />
                  <Person name="PHP组" count="10" />
                  <Person name="Java组" count="10">
                    人间处处是真爱
                  </Person>
                </div>
              );
            }
          }
    
  • 2.修改state里的值

           changeName = () => {
              this.state.person[0].name = '123';
            };
    
    
    
          Do not mutate state directly. Use setState() 
          不要直接的修改值 
    
          要用React提供的这个方法 setState() :
    
        this.setState({
            person: [{ name: 'Android5', count: 1000000 }, { name: 'DBA', count: 1 }, { name: 'Test', count: 40 }]
          });
    

7.React属性传值(传事件)

  • 1.函数传参

      <button onClick={() => this.changeName('安卓')}>更改状态值</button> // 通过箭头函数的方式
    
      <button onClick={this.changeName.bind(this, '安卓')}>更改状态值</button> // 通过bind
    
  • 2.属性传值

      <Person myClick={this.changeName.bind(this, 'IOS')} name="ios组" count="20" />
    
    
              然后子组件通过props的方式去接收
             <p onClick={props.myClick}>
                  {props.name},有{props.count}人
                </p>
    

8.React双向数据绑定

          <input type="text" onChange={props.changed} defaultValue={props.name} />
            在input标签上绑定一个onChange方法 并接收props传递过来的changed上绑定的事件
  • APP.js person标签中定义changed方法并把定义的事件执行

                <Person changed={this.nameChangeHandle} name={this.state.person[0].name} count={this.state.person[0].count} />
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 现在最热门的前端框架,毫无疑问是React。在基于React的React Native发布一天之内,就获得了 50...
    Mycro阅读 1,025评论 3 6
  • React简介 React是一个用于构建用户界面的JavaScript库,主要有以下几个特点: 声明式设计--Re...
    紫诺_qiu阅读 910评论 0 2
  • 在React这股目前最热前端框架之风刮来之前,一直在Cocos2d-html5游戏和半路出家的Android应用的...
    hahafei阅读 379评论 0 2
  • 1.React 的学习资源 react官方首页https://facebook.github.io/react/ ...
    贾里阅读 2,983评论 0 0
  • 2018年9月12日读书分享第2天 《孔子如来》——(2)人生即天命 前几天在朋友的推荐下看《天道》,一部24集的...
    左静阅读 481评论 0 0