美文网首页
用React做一个Todo

用React做一个Todo

作者: 路人_Ding | 来源:发表于2019-01-10 14:12 被阅读0次

第一步

1.创建一个文件夹来存放项目文件
2.打开cmd窗口进入到刚创建的文件夹目录
3.在cmd窗口输入 $ npx create-react-app my-app 
3. 文件下载完成在窗口中输入 cd my-app 进入到文件内去 
4. 在cmd窗口输入 npm start 此刻项目文件会自动启动打开浏览器的http://localhost:3000端口下运行
5.在项目文件中删除一些官方自带的文件

第二步

1.创建index.js文件
2.引入项目的依赖
3.创建App.js文件
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));
这里要另外安装axios依赖,这个用来发送Ajax请求的
首先要安装yarn,自行百度

import React, { Component } from 'react';
import Todolist from './Todolist';
import axios from "axios";
class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      inputvalue :  "",
      List : []
    }
    this.remove = this.remove.bind(this);
    this.addClick = this.addClick.bind(this);
    this.handerloChange = this.handerloChange.bind(this);
    
  }
  render() {
    return (
      <div>
        <div>
            <input type="text" placeholder="请输入待办事项" value={this.state.inputvalue} onChange={this.handerloChange}></input>
            <button onClick={this.addClick}>提交</button>
        </div>
        <ul>
            {this.getTodoItem ()}
        </ul>
      </div>
    );
  }
  componentDidMount() {
    axios.get('http://yapi.demo.qunar.com/mock/38353/app')
    .then((res) =>{ console.log(res.data);
      this.setState(() =>{
          return {
            List : res.data
          }
      });
    })
    .catch(() =>{alert('erro')})
  }
  getTodoItem () {
    return  this.state.List.map((item,index) =>{
      return(
            <Todolist
             key={index} 
             content={item} 
             index={index} 
             delet={this.remove}
             />
      )
    })
  }
  handerloChange (e) { 
    const value = e.target.value;
    this.setState(() => ({
        inputvalue : value
    }));
  }
  addClick () {
    this.setState((prevState) =>({
      List : [...prevState.List,prevState.inputvalue],
      inputvalue : ""
    }))
  }
  remove (index) {
 
    this.setState((prevState) => {
      const List = [...prevState.List];
      List.splice(index,1);
      return {List}
    });
  }
}

export default App;

第三步

创建Todolist 组件
新建一个Todolist .js文件
代码如下:
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class Todolist extends Component {
    constructor(props) {
      super(props);
      this.state={
       }
      this.handelClick = this.handelClick.bind(this);
    }
    shouldComponentUpdate(nextProps,nextState) {
        if(nextProps.content !== this.props.content) {
            return true;
        }else{
            return false;
        }
    }
    render() {
        const {content} = this.props;
        
        return (
            <div onClick={this.handelClick}>{content}</div>
        )
    }


    handelClick() {
        const {delet,index} = this.props;
        delet(index);
    }
}
Todolist.propTypes = {
    content : PropTypes.oneOfType([PropTypes.string,PropTypes.number]),
    delet : PropTypes.func,
    index : PropTypes.number
}
export default Todolist;

最后

npm run start 来运行项目

相关文章

网友评论

      本文标题:用React做一个Todo

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