• 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>
  • 相关阅读:
    HTML5第二节
    HTML5在移动端开发的12大特性
    移动端开发遇到的坑
    html5 meta(移动端)介绍及使用
    CSS的margin塌陷(collapse)
    Block Demo
    设计模式之代理
    OC Block网上转载
    GCD之全局、主线程
    Spark SQL中 RDD 转换到 DataFrame
  • 原文地址:https://www.cnblogs.com/l8l8/p/9457763.html
Copyright © 2020-2023  润新知