老莫的笔记本  
  
查看: 830|回复: 0

React 组件之间的传值

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2019-12-19 16:21:30 | 显示全部楼层 |阅读模式
  1. import React, { Fragment, Component } from 'react';

  2. class ToDoItem extends Component
  3. {

  4.     // 父子组件传值
  5.     // 组件之间的传值靠 属性
  6.     // 第一步 在 父组件【其实不是负的也对啊】 <Myapp  mydata={dsss} /> 上绑定 属性
  7.     // 第二步 在 组件内部 使用 this.props.mydata 来接受 传递过来的值 与 方法

  8.     // 里面的this 指向问题
  9.     // 先说一个简写  在 constructor 中 把 函数指定了 this 则 下面不用指定
  10.     // 再说一个 父级this 的绑定问题 ; 因为方法是用 属性传过来的 .直接在父级页面 bind(this) 即可把 子页面接收到的方法 指向调整为this

  11.     constructor(props)
  12.     {
  13.         super(props);
  14.         this.delFunction = this.delFunction.bind(this); // 和在行间写一样
  15.     }

  16.     render(){
  17.         return (
  18.             <Fragment>
  19.                 <li onClick={this.delFunction} >
  20.                     {this.props.content }  
  21.                 </li>
  22.               
  23.             </Fragment>
  24.         );
  25.     }


  26.    
  27.     delFunction()
  28.     {
  29.         // alert(this.props.index )
  30.         // 花样传值
  31.         this.props.delF( this.props.index )
  32.     }

  33. }

  34. export default ToDoItem;
复制代码




贴另一个页面的部分代码

  1. render() {


  2.     return (
  3.       <Fragment>

  4.         <div className="Mytest">
  5.           <input
  6.             value={this.state.inputValue}
  7.             onChange={this.hand.bind(this)}
  8.             onKeyDown ={this.handleKey.bind(this)}
  9.             // 这里的 bind(this) 表示在该函数中重新制定该this对象 为 类本身
  10.             type="text" />
  11.           <button  onClick={this.handleBtnClick.bind(this) }   >提交</button>
  12.         </div>
  13.         <ul>
  14.           {
  15.             this.state.list.map((item, index) => {
  16.               // 如果此处不加 key 值 控制台会给警告: 列表中每个内容都得有个独特的key
  17.               // 这里这个 bind 里,绑定this  还可以传递一个索引值 index
  18.               return (
  19.                 <Fragment>
  20.                   {/*
  21.                     <li key = {index} onClick={this.handleLiClick.bind(this,index)}>
  22.                     {item}
  23.                   </li>
  24.                   */}
  25.                   <ToDoItem
  26.                     content={item}
  27.                     index={index}
  28.                     delF ={this.handleLiClick.bind(this)}
  29.                   />
  30.                 </Fragment>
  31.               );
  32.             })
  33.           }

  34.         </ul>
  35.       </Fragment>

  36.     );
  37.   }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表