|
- import React, { Fragment, Component } from 'react';
- class ToDoItem extends Component
- {
- // 父子组件传值
- // 组件之间的传值靠 属性
- // 第一步 在 父组件【其实不是负的也对啊】 <Myapp mydata={dsss} /> 上绑定 属性
- // 第二步 在 组件内部 使用 this.props.mydata 来接受 传递过来的值 与 方法
- // 里面的this 指向问题
- // 先说一个简写 在 constructor 中 把 函数指定了 this 则 下面不用指定
- // 再说一个 父级this 的绑定问题 ; 因为方法是用 属性传过来的 .直接在父级页面 bind(this) 即可把 子页面接收到的方法 指向调整为this
- constructor(props)
- {
- super(props);
- this.delFunction = this.delFunction.bind(this); // 和在行间写一样
- }
- render(){
- return (
- <Fragment>
- <li onClick={this.delFunction} >
- {this.props.content }
- </li>
-
- </Fragment>
- );
- }
-
- delFunction()
- {
- // alert(this.props.index )
- // 花样传值
- this.props.delF( this.props.index )
- }
- }
- export default ToDoItem;
复制代码
贴另一个页面的部分代码
- render() {
- return (
- <Fragment>
- <div className="Mytest">
- <input
- value={this.state.inputValue}
- onChange={this.hand.bind(this)}
- onKeyDown ={this.handleKey.bind(this)}
- // 这里的 bind(this) 表示在该函数中重新制定该this对象 为 类本身
- type="text" />
- <button onClick={this.handleBtnClick.bind(this) } >提交</button>
- </div>
- <ul>
- {
- this.state.list.map((item, index) => {
- // 如果此处不加 key 值 控制台会给警告: 列表中每个内容都得有个独特的key
- // 这里这个 bind 里,绑定this 还可以传递一个索引值 index
- return (
- <Fragment>
- {/*
- <li key = {index} onClick={this.handleLiClick.bind(this,index)}>
- {item}
- </li>
- */}
- <ToDoItem
- content={item}
- index={index}
- delF ={this.handleLiClick.bind(this)}
- />
- </Fragment>
- );
- })
- }
- </ul>
- </Fragment>
- );
- }
复制代码
|
|