React 组件化 Todolist

1.先建立两个js文件 1.App.js 2.Text.js

    组件A (App.js)

import React,{Component,Fragment} from 'react';
import Text from './Text' //同级目录下引入 Text.js文件

class App extends Component{
  constructor(props){
    super(props)
    this.state={
      list:["衣服","食物"]
    }
  }
  add(){ //增加
    let arr = this.state.list
    arr.push(this.refs.iptValue.value)
    this.setState({
     list:arr
    })
    this.refs.iptValue.value = null;
  }
  del(index){ //删除
    let arr1 = this.state.list
    arr1.splice(index,1)
    this.setState({
      list:arr1
    })
  }
  render(){
    return(
      <Fragment>
        <div>
        <input type="text" placeholder="请输入..." ref="iptValue"/> 
        <button onClick={this.add.bind(this)}>增加</button>
        </div>
        <ul>
          {
            this.state.list.map((item,index)=>{
              return(
               <li key={index+item}>
                 <Text content={item} index = {index} delItem = {this.del.bind(this)}/>
                 {/**
                    Text为组件B(或称子组件)
                    content为传给组件B list 遍历出的内容
                    index 为 下标
                    delItem 为 让组件B来调用 删除的方法
                */}
               </li>
              )
            })
          }
        </ul>
      </Fragment>
    )
  }
}
export default App;

  组件B(Text.js)

import React, { Component,Fragment } from 'react';

class Text extends Component {
 constructor(props){
   super(props)
   this.del = this.del.bind(this)
 }
  del(){ //调用组件A的方法来进行删除,react不允许子组件直接操作父组件的数据所以只能调用方法
    this.props.delItem(this.props.index)
  }
  render() { 
    return ( 
      <Fragment>
        {/**
          使用 this.props来获取组件A传递过的值
        */}
        <span>{this.props.content}</span>
         ---
        <span onClick={this.del}>删除</span>
      </Fragment>
     );
  }
}
 
export default Text;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值