機能性を高めるtodolistの反応

補足知識
1 ==「インストールパラメータを確認するためにプロパ種類のパッケージをインストールNPM BCページ組み込ま から輸入PropTypes 『プロップタイプ』 //パラメータの制限を
    //ページBの検証パラメータ必要
    静的propTypes = { 
        LEN:PropTypes.number.isRequired、
        addtod:PropTypes.func.isRequired 
    }
C //必要認証パラメータページ
静的propTypes = {todolistの:PropTypes.array.isRequired}

 

 

 

todelistの要約

 1 == "親コンポーネント内のデータ

    コンストラクタ(小道具){ 
          スーパー(小道具); 
          この .STATE = { 
              todolistの:[ 
                  {ID: 1、テキスト:" web111 " }、
                  {ID: 2、テキスト: "web222" }、
                  {ID: 3、テキスト: "web333" } 
              ] 
          } 
    }


 2 == 親サブアセンブリに送信されるデータ内の「コンポーネント(息子の父親)
 LETのtodolistの{}は = この .STATEを; / / 構造 
 <C todolistのtodolistの= {}> </ C> 


3 == 「サブアセンブリレンダリング
 (描画){ 
        LET {} todolistの= これは.props; 
        はconsole.log( "値が渡さ" 、todolistの)
         リターン <UL> 
               {todolist.map((項目、指数) => {
                  リターン   <LIキー指数= {}>} {item.Text < / LI>
                })}
          </ UL>

    }


。4 == 「親サブアセンブリに伝達アセンブリの長さ
  <Bのtodolist.lengthのLEN = {} = {addtod この .addtod}> </ B>親
   



5 == 「サブアセンブリレンダリング
   レンダリング(){ 
        LETがlen {}は = これは.props
         リターン <DIV>を
                <INPUT TYPE = "テキスト" REF = "connの" /> <ボタンのonClickは= {this.add}> 123#{LEN} </ボタン> 
            </ div> 
    } 6 == "点击按钮获取到值
    レンダリング( ){ 
        {LENをせ} = これは.props
         リターン <DIV> 
                の<input type = "text" refが"connの" = /> <ボタンのonClick = {this.add}> 123#{LEN} </ボタン> 
            </ DIV> 
    } 
    を追加 =()=> { 
        にconsole.log(この.refs.conn.value)
        uservaluを聞かせ = この .refs。conn.value; // 値を取得します。









        {}はLETをaddtod = この .props; // サブアセンブリ渡される方法のような親要素

        addtod(uservalu)   // このメソッドが呼び出され

        、この "; =" .refs.conn.value // クリア
    }

 7 == 「親コンポーネントサブアセンブリへの送達の方法は、


 8 == 「メソッドは、親サブアセンブリのアセンブリを呼び出して、フォームの内容を返し


 9 ==」親要素状態データの変更に戻るサブアセンブリを受信します

 

 

 

以下は、完全なコードです

A.jsタイトル

インポートが反応、{コンポーネント} "反応する"から
エクスポートデフォルトクラスA拡張するコンポーネント{ 
    レンダリング(){ 
        リターン <DIV>我是标题ToDoリスト</ div>

    } 
}

 

 

フォームやボタンB.js

import React, { Component } from "react"
export default class B extends Component {

    add=()=>{
        console.log(this.refs.conn.value) 
        let uservalu = this.refs.conn.value; //获取值

        let {addtod}=this.props;//父组件想子组件传递了一个方法

        addtod(uservalu)  //调用这个方法

        this.refs.conn.value=""; //清空
    }

    render() {
        let { len}=this.props
        return (
            <div>
                <input type="text" ref="conn" /><button onClick={this.add} >123#{len}</button>
            </div>
        )
    }
}

 

C.js 渲染

import React, { Component } from "react"
export default class C extends Component {
//    constructor(props){
//        super(props);
//        let { todolist}=this.props; 
//    }

    render() {
        let { todolist } = this.props; //它等价于上面的哪一个内容
        console.log("值传递过来",todolist)
        return (
         <ul>
               {todolist.map((item,index)=>{
                 return  <li key={index}>{item.text}</li>
               })}
         </ul>
        )
    }
}

 

最大父组件DoAddList.js

import React, { Component } from "react"

// 引入组件
import A from "./A"
import B from "./B"
import C from "./C"


export default class DoAddList extends Component {

    constructor(props){
          super(props);
          this.state={
              todolist:[
                  { id: 1, text: "web111" },
                  { id: 2, text: "web222" },
                  { id: 3, text: "web333" }
              ]
          }
    }

    addtod=(data)=>{
        let con=this.state.todolist;
        con.unshift({ id: this.state.todolist.length + 1, text: data })

        // 跟新状态
        this.setState({
            todolist: con
        })
    }
     
    render() {
        let { todolist}=this.state; //结构
        return (
            <div>
              <A></A>
                {/* 将右边的{this.addtod 方法传递给子组件 */}
                <B len={todolist.length} addtod={this.addtod}></B>
                {/*将父组件中的数据  传递给子组件(父传子)*/}
                <C todolist={todolist}></C>
            </div>
        )
    }
}

  

 

おすすめ

転載: www.cnblogs.com/IwishIcould/p/11618906.html