繁体   English   中英

在React JS中将道具传递给父级

[英]Passing props to parent in React JS

这里我有一个默认数字为“3”的文本字段,我希望在输入值并单击按钮时更新它。 因为,我正在更新Child中的值,我不知道如何将props传递给Parent。

var Game = React.createClass({
    getInitialState: function() {
        return {
           input: 3
        };
    },

    setSize: function() {
        //here it should update "input"
        this.setState({input: /* value from Child */ })
    },

    render: function() {
        return( 
            <div>
                <div id='game'>
                    <Menu input={this.state.input}/>
                </div>
            </div>
        )
    }  
});


var Menu = React.createClass({
    render: function() {
        return (
            <div id='menu'>
                <input type="number" id="myNumber" value={this.props.input}> </input>
                <button id="mySetNumber" onclick={this.props.setSize}>Try it</button>
            </div>
        )
    }
})

它可以是这样的:

var Game = React.createClass({
  changeInput: function(e) {
    this.setState({/* do something */})
 },

 render: function() {
  return (
    <div id="game">
      <Menu onValueChange={this.changeInput} />
    </div>
    )
  }
});

var Menu = React.createClass({
  handleChange: function(e) {
    this.props.onValueChange(/* pass the element or the value */)
  }

 render: function() {
   return (
     <div id="menu">
       <input onChange={this.handleChange}/>
    </div>
   )
  }
})

或多或少这样的事情应该有效。 欲了解更多看到这个 我们的想法是将回调函数从父级传递给子级。

var App = React.createClass({
    handleDayGreeting:function(greeting){
        this.setState({dayGreeting:greeting});
    },
    render:function({onClick,message}){     
        return (
            <div>
                <span> Hello ! {message} </span>
                <Greeting handleDayGreeting={this.handleDayGreeting.bind(this)} />              
            </div>          
        );
    }
});

var Greeting = React.createClass({
    sayMorining:function(){
        this.props.handleDayGreeting('Good Morining');
    },
    sayEvening:function(){
        this.props.handleDayGreeting('Hey...! Good Evening');
    },
    render:function(){
        return (
            <div>
                <button onClick={onClick}>Say Morning</button>
                <button onClick={onClick}>Say Evening</button>
            </div>
        );
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM