美文网首页工作生活
react学习笔记-介绍(1)

react学习笔记-介绍(1)

作者: wayne1125 | 来源:发表于2019-07-02 21:33 被阅读0次

    react由FaceBook推出,2013年开源的,函数式编程思想,使用人数最多的前端框架,健全的文档及完善的社区

    2-2、安装

    npm install -g create-react-app 安装脚手架
    create-react-app todolist 创建项目
    cd todolist
    npm start
    npm add axios // ajax请求插件

    2-3、工程目录文件简介

    // index.js
    // PWA https协议的服务器,用户第一次访问后,会缓存内容,即使断网进到页面会展示之前缓存的内容
    import * as serviceWorker from './serviceWorker';
    serviceWorker.unregister();

    // public/manifest.json
    // 将项目打包成桌面应用的配置

    {
      "short_name": "React App", // 快捷方式名称
      "name": "Create React App Sample",
      "icons": [
        {
          "src": "favicon.ico", // 快捷方式图标
          "sizes": "64x64 32x32 24x24 16x16",
          "type": "image/x-icon"
        }
      ],
      "start_url": ".", // 跳转网址
      "display": "standalone",
      "theme_color": "#000000",
      "background_color": "#ffffff"
    }
    

    2-4、JSX语法

    // react 版本更新时组件格式变化
    //react 16.8.6
    import React from 'react'; // 引入React目的是可以运用jsx语法,即下方标签写法
    
    function App() {
      // JSX
      return (
        <div className="App">
          hello world
        </div>
      );
    }
    
    //react 16.6.3
    // import React,{Component} from 'react'
    // import {Component} from 'react'
    // 相当于
    // import React from 'react'
    // const Component = React.Componnet
    // class App extends Component {
    //   render (){
    //     return (
    //       <div className="App">
    //         hello world
    //       </div>
    //     );
    //   }
    // }
    
    export default App;
    

    3-1、todolist

    import React,{Fragment} from 'react'
    Fragment占位符,可包裹整个jsx语句

    3-2、React中响应式设计思想和事件绑定

    <input
         onChange={this.handleInputChange.bind(this)}
    />
    handleChange(key,e){
      console.log(e.target.value,key)
        this.setState({
          [key]: e.target.value
          // inputValue: e.target.value
        })
    }
    <input
        onChange={(e)=>this.handleChange('inputValue',e)}
         onChange={(e)=>this.handleChange(val,'title')}
    />
    

    JSX中注释写法
    { /* 这是jsx语法注释 */ }或
    {
    //这是jsx单行注释
    }

    3-4、JSX语法细节补充

    // 对标签不转义
    dangerouslySetInnerHTML={{__html:item}} 
    // 点击输入框前label,自动光标聚焦
    <label htmlFor="insertArea">输入内容</label>
    <input
          id="insertArea"
     />
    

    3-5、拆分组件与组件之间的传值

    // 父组件
    <TodoItem
      content={item}
      index={index}
      itemDelete={this.handleItemDelete}
    />
    //子组件
    render(){
        const {content} = this.props
        return (
          <div>
            {content}
          </div>
        )
      }
    

    3-7、围绕React衍生的思考

    声明式开发
    可以与其它框架并存
    组件化
    单向数据流(父组件给子组件传值,子组件只能使用,只能通过父组件的方法操作数据)
    视图层框架(复杂的需要靠redux之类辅助)
    函数式编程(维护方便,前端自动化测试更加便利)

    相关文章

      网友评论

        本文标题:react学习笔记-介绍(1)

        本文链接:https://www.haomeiwen.com/subject/uwgwcctx.html