美文网首页
react入门

react入门

作者: 五四青年_4e7d | 来源:发表于2020-02-18 19:51 被阅读0次

框架和库的概念:

库:小而巧  
框架:大而全

什么是模块化和组件化:

模块化:从代码的角度上分析,抽离公共模块封装复用;
组件化:从Ui的角度上考虑分析;

虚拟DOM:

本质:用js对象来模拟dom元素和嵌套关系;
目的:为了实现元素的高效更新;

Diff算法:

tree.diff:新旧两棵DOM树,逐层对比的过程;
component.diff: 每一层中组件级别的对比;
element.diff:如果类型相同进行元素对比的过程;

react用webpack4.0步骤:

 1.运行npm init -y快速初始化项目;
 2.在项目根目录创建dist和src产品目录;
 3.在src下创建index.html  main.js
 4.安装webpack 命令:cnpm  i webpack -D
 cnpm i webpack-cli -D

react的三大体系:

react.js  :组件编写
reactNative: 移动端开发
reactVr: 虚拟现实技术开发

react开发环境搭建(管理员身份运行):

npm install -g create-react-app
create-react-app demo1
cd demo1
npm start

项目文件目录:

package.json:第三方包和配置文件;
package-lock.json:锁定安装的版本号(一般不会改);
node_modules:脚手架下载的第三方包;
public:公用的文件;
    public-favicon.ico:图标;
    public-index.html:模板文件;
    public-manifest.json:移动端的配置;
src:项目开发的主要目录:
    src-index.js:项目的入口文件;

react的组件化开发:

// index.js
//react挂载到那个组件中:
ReactDOM.render(<App />, document.getElementById('root'));

jsx的简单用法:

1.通俗的理解遇到"{"就是js,遇到“<”就是html;
2.使用默认方法:
function App() {
  return (
    <ul className="list">
       <li>李慷</li>
    </ul>
  )
}
3.使用component:
import React,{Component} from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
 render(){
    return (
     <ul className="list">
       <li>李慷</li>
    </ul>
     ) 
    }
}
export default App;

</Fragment>组件的用法:

类似一个包装元素,在最外一层:
import React,{Component,Fragment} from 'react';
 <Fragment>
 </Fragment>

简单的demo(增加菜单选项):

//1.学习方法,属性,结构的写法:
//2.熟悉绑定事件的方法;
//3.熟悉方法的创建
import React, { Component, Fragment } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  constructor(props) {
    super(props)
    this.state = {
      inputValue: '',
      list: ['js' ,'css']
    }
  }
  render() {
    return (
      <Fragment>
        <div>
          <input  value={this.state.inputValue} onChange={this.inputChange.bind(this)}/>
          <button onClick={this.addLsit.bind(this)}>增加</button>
        </div>
        <ul className="list">
           {
            this.state.list.map((item,index)=>{
               return(
                <li key={index+item}>
                <span>{item}</span>
                <button onClick={this.deleteItem.bind(this,index)}>删除</button>
                </li>
               )
              
            })
          }
        </ul>
      </Fragment>
    )
  }
  inputChange(e){
    this.setState({
      inputValue:e.target.value
    })
   
  }
  //增加列表:
  addLsit(){
    this.setState({
      list:[...this.state.list,this.state.inputValue],
      inputValue:''
    })
  }

  //删除列表项:
  deleteItem(index){
    let list = this.state.list
    list.splice(index,1)
    this.setState({
      list:list
    })

  }
}
export default App;

下载Simple React Snippets 快速书写项目:

imrc 
cc

react 的组件拆分和父子组件传值:

//父组件:
import React, { Component, Fragment } from 'react';
import Home from  './App.test'
import './App.css';

class App extends Component {
  constructor(props) {
    super(props)
    this.state = {
      inputValue: '',
      list: ['js' ,'css']
    }
  }
  render() {
    return (
      
      <Fragment>
       <div>
         <label>增加服务</label>
         <input  value={this.state.inputValue}  onChange={this.inputChange.bind(this)}/>
         <button onClick={this.addLsit.bind(this)}>增加</button>
       </div>
       <ul>
         {
           this.state.list.map((item,index)=>{
             return (
                 <Home
                  key={index+item} 
                  content={item}  
                  index={index}
                  deleteItem={this.deleteItem.bind(this)} />
             )
           })
         }
       </ul>
        </Fragment>
    )
  }
  inputChange(e){
    this.setState({
      inputValue:e.target.value
    })
   
  }
  //增加列表:
  addLsit(){
    this.setState({
      list:[...this.state.list,this.state.inputValue],
      inputValue:''
    })
  }

  //删除列表项:
  deleteItem(index){
    let list = this.state.list
    list.splice(index,1)
    this.setState({
      list:list
    })

  }
}
export default App;


//子组件:
import React, { Component, Fragment } from 'react';


class Home  extends Component {
  constructor(props){
   super(props)
   this.hadleClick = this.hadleClick.bind(this)
   }
  
  render() {
    return (
      <li onClick={this.hadleClick}>{this.props.content}</li>
    )
  }

 hadleClick(){
   console.log(this.props.index)
   this.props.deleteItem(this.props.index)
 }
}
export default  Home;



相关文章

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

  • React Native学习资料

    React 入门实例教程React-Native入门指南Flex 布局教程:语法篇React Native探索(二...

  • React Native

    JavaScript 标准参考教程(alpha)ECMAScript 6入门 React 入门实例教程React ...

  • React 实践(一)

    参考:《React 入门实例教程--阮一峰》、《React 学习教程--众成翻译》。React 框架入门学习摘录。...

  • awesome-react-native

    React React 中文文档一定要看官方文档 React 入门实例教程阮一峰老师出品,最好的 react 入门...

  • 慕课视频

    免费 《Web安全-XSS》《ReactNative基础与入门》《React入门》《在React中使用Redux数...

  • React入门-001

    +++Categories = ["React",]Tags = ["React","入门",]date = "2...

网友评论

      本文标题:react入门

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