组件拆分与组件之间的传值
父子组件的概念:
父组件通过属性的方式,向自组件传值
子组件通过this.props的属性,接收传递过来的值
父组件
src/TodoList.js
import React,{Component,Fragment} from 'react'; import TodoItem from './TodoItem'; import './style.css'; class TodoList extends Component { constructor(props) { super(props); this.state = { inputVal:'',list:[] }; this.changeVal=this.changeVal.bind(this); this.addItem=this.addItem.bind(this.deleteItem=this.deleteItem.bind(); } changeVal(e){ .setState({ inputVal: e.target.value }); } addItem(e){ //按下回车键 if(e.keyCode===13 && e.target.value!==""){ const list=[....state.list,e.target.value] .setState({ list:list 对象的键值相同时,简写 list,inputVal:'' }) } } deleteItem(index){ const list=[....state.list]; list.splice(index,1);从数组中删除指定index的数据 .setState({ list }) } getList(){ return this.state.list.map((item,index)=>{ return ( <TodoItem item={item} key={index} index={index} deleteItem={.deleteItem} /> ) }) } render(){ 这是JS中的注释 ( <Fragment> {/* 这是JSX中的注释 */} <label htmlFor="input">请输入内容:</label> <input type="text" id="input" className="input" value={.state.inputVal} onChange={.changeVal} onKeyUp={.addItem} /> <ul>{this.getList()}</ul> </Fragment> ); } } export default TodoList;
自组件 TodoItem.js
import React,{Component} from 'react'; class TodoItem extends Component{ constructor(props){ super(props); ); } deleteItem(){ 调用父组件传递过来的方法 this.props.deleteItem(this.props.index); 解构赋值写法 const {deleteItem,index}=.props; deleteItem(index); } render(){ return <li key={this.props.index} onClick={this.deleteItem}>{this.props.item}</li> } } export default TodoItem;
效果图
原文链接:/react/881437.html