React16的简单上手之路

小伙伴想学习的可以参考技术胖的教程哦,这是我最喜欢的前端大佬,地址 http://www.jspang.com/posts/2019/05/04/new-react-base.html#

1、安装

安装脚手架: 

npm install -g create-react-app

 创建项目:

create-react-app demo01   //用脚手架创建React项目

 运行:

npm start   //预览项目,如果能正常打开,说明项目创建成功

2、项目入口文件--src--index.js

     项目编写文件--src--App.js 

3、简单的代码示例--增加和删减示例

React16的简单上手之路_第1张图片

 

父组件:

import React, { Component } from 'react';
import Child from './child.js'

class App extends Component {
  constructor(props) {
    super(props);
    this.state = { 
      value:'一片紫海',
      list:['再来训练一遍','好喜欢新歌啊']

    }
  }
  render() { 
    return (  
      
    {this.state.list.map((item,index)=>{ return
    })}
); } changeInput(e){ this.setState({ value:e.target.value }) } addIn(){ this.setState({ list:[...this.state.list,this.state.value] }) } deleteItem(index){ let list =this.state.list; list.splice(index,1) this.setState({ list:list }) } } export default App;

 

子组件:

import React, { Component } from 'react';

class Child extends Component {
  render() { 
    return (  
      
{this.props.content}
); } handleClick(){ this.props.deleteItem(this.props.index) } } export default Child;

4、代码解释:

(1)关于input

react是需要state来控制变量的,可以在constructor中初始化变量的值

 constructor(props) {
    super(props); //调用父类构造函数,固定写法
    this.state = { 
      value:'一片紫海',
      list:['再来训练一遍','好喜欢新歌啊']

    }
  }
 绑定事件,需要绑定this
changeInput(e){
    this.setState({
      value:e.target.value  //改变input的值需要用setState
    })
  }

(2) 循环数据

    { this.state.list.map((item,index)=>{ return
  • {item}
  • //需要key值,不然控制台会报错 }) }

(3)增加数据

addIn(){
    this.setState({
      list:[...this.state.list,this.state.value]
    })
  }

 

(4)删除数据--注意是不能直接操作state的

    { this.state.list.map((item,index)=>{ return (
  • {item}
  • ) }) }
deleteItem(index){
    let list =this.state.list;
    list.splice(index,1)
    this.setState({
      list:list
    })
 }

(5)父子组件传值

把要循环的内容展示抽出去,再引入子组件,注册使用:

子组件:

import React, { Component } from 'react';

class Child extends Component {
  render() { 
    return (  
      
我喜欢邓紫棋
); } handleClick(){ this.props.deleteItem(this.props.index) } } export default Child;

 

父组件:

import React, { Component } from 'react';
import Child from './child.js' --引入

class App extends Component {
  constructor(props) {
    super(props);
    this.state = { 
      value:'一片紫海',
      list:['再来训练一遍','好喜欢新歌啊']

    }
  }
  render() { 
    return (  
      
--需要嵌套一层包裹的,官方要求
    {this.state.list.map((item,index)=>{ return
    --注册 })}
); } } export default App;

 父组件传值给子组件:

  --父组件传值
{this.props.content} --子组件接收

子组件传值给父组件--官方规定子组件不能直接修改父组件的值,子组件可以通过调用父组件的方法来实现修改父组件的值。

 
通过deleteItem来调用父组件原来的删除事件,需要传index过去  --父
 
{this.props.content}
handleClick(){ this.props.deleteItem(this.props.index) 子组件调用父组件的方法 }

 

以上为一个简单的入门,整理的是技术胖的教程,具体的api之类可以自己拓展学习,本篇只是一个入门的简单梳理。

你可能感兴趣的:(React16)