zoukankan      html  css  js  c++  java
  • react组件传值传方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="../node_modules/react/umd/react.development.js"></script>
        <script src="../node_modules/react-dom/umd/react-dom.development.js"></script>
        <script src="../node_modules/babel-standalone/babel.js"></script>
    </head>
    <body>
        <div id="app"></div>
        <script type="text/babel">
        class Txt extends React.Component{
            constructor(props){
                super(props);
                this.Input = this.Input.bind(this);
            }
            Input(e){
              if(e.keyCode===13){
                this.props.addItem(e.target.value);
                // e.target.value = '';
                // this.refs.wbk.value = '';
                this.jd.value = '';
              }
            }
            render(){
                console.log(this)
                // 官方推荐 将文本框的值挂载到函数实例上储存起来 很react的做法
                return (
                    // <input type='text' onKeyUp={this.Input} ref='wbk'/>
                    <input type='text' onKeyUp={this.Input} ref={(wb)=>this.jd=wb}/>
                )
            }
        }
        class List extends React.Component{
            constructor(props){
                super(props);
            };
            render(){
                let {data:list} = this.props;
                return(
                    // 这里绑定的this没有作用,只是为了返回一个没有立即执行的方法
                    <ul>
                        {
                            list.map((item,index)=>{
                            return <li key={index} style={{background:index===1?'red':'skyblue'}}>
                            {item}
                            <button onClick={this.props.remove.bind(this,index)}>del</button>
                            </li>
                            })
                        }
                    </ul>
                )
            }
        }
        class App extends React.Component{
            // 进行props的继承
            constructor(props){
                super(props);
                // super继承根数据
                this.state = {
                    list:['aa','bb']
                }
                // 绑定了这些方法调用的this
                this.addItem = this.addItem.bind(this);
                this.del = this.del.bind(this);
            };
            addItem(str){
                // 解构赋值 进行修改state状态
                let list1 = [...this.state.list,str];
                this.setState({
                    list:list1
                })
            };
            del(idx){
                let list1 = [...this.state.list];
                list1.splice(idx,1);
                this.setState({
                    list:list1
                })
            }
            render(){
                // 结构数据
                let {list} = this.state;
                return (
                    // 进行传值和传方法
                    <div>
                        <Txt addItem={this.addItem}/>
                        <List  data={list} remove={this.del}/>
                    </div>
                )
            }
        }
            ReactDOM.render(
                <App/>,
                document.getElementById('app')
            )
        </script>
    </body>
    </html>
  • 相关阅读:
    【Spring】 AOP Base
    【Offer】[20] 【表示数值的字符串】
    【Offer】[19] 【字符串匹配】
    【设计模式】代理模式
    【LeetCode】[0002] 【两数之和】
    【Offer】[18-1] 【在O(1)时间内删除链表节点】
    【Offer】[18-2] 【删除链表中重复的节点】
    【Offer】[17] 【打印1到最大的n位数】
    【Offer】[16] 【数值的整数次方】
    python_内置函数
  • 原文地址:https://www.cnblogs.com/l8l8/p/9457763.html
Copyright © 2011-2022 走看看