我有两个简单的带有父子关系的reactjs组件。子级包含一个带有onChange事件的输入和一个回调父级以设置状态。当我运行它时,setState似乎在父组件中工作,但传递到子组件中的道具似乎没有更新。有什么想法吗?下面是一段代码片段:
var FooInput = React.createClass({
handleInputChange: function(e) {
this.props.onInputChange(e.target.name, e.target.value);
},
render: function() {
return (
<div>
<input name="foo" value={this.props.foo} onChange={this.handleInputChange} />
</div>
)
}
})
var FooApp = React.createClass({
getInitialState: function() {
return {
foo: 'bar',
};
},
handleInputChange: function(key, value) {
this.setState({key: value});
},
render: function() {
return (
<div>
<FooInput
foo={this.state.foo}
onInputChange={this.handleInputChange} />
</div>
);
}
});
在上面的示例中,FooInput
子组件中的输入值保持为“bar”,尽管在FooApp
父组件中触发了handleInputChange
,并且通过将foo传递到子组件中。道具
。为什么输入值不改变以反映新的状态?
通过执行此操作,您实际上是在设置一个名为
。如果需要变量键,可以使用括号:key
的状态变量。设置状态({key:value})
handleInputChange: function(key, value) {
this.setState({[key]: value});
}
或者创建一个新对象。
handleInputChange: function(key, value) {
const newState = {};
newState[key] = value;
this.setState(newState);
}
我有两个组件:父组件,我想改变子组件的状态: 和子组件: 我需要从父组件更改子组件的打开状态,或者当单击父组件中的按钮时,从父组件调用子组件的toggleMenu()?
我对JS的反应有点陌生。我有两个问题。我来了 现在我要做的是,当应用程序组件挂载时,我生成一个对后端服务器的ajax调用,当它返回时,它更新道具,并设置状态,这样子组件也会重新呈现,但子组件不会重新呈现。谁能告诉我出了什么问题。 问题2 现在让我们假设我将进入组件二路由,它将呈现组件二,我在应用程序组件中生成一个ajax调用,根据ajax调用返回的数据,我在应用程序组件中设置了一些道具,我还希望组
问题内容: 我有两个组件: 父组件 ,我想从中更改子组件的状态: 和 子组件 : 我需要从父组件更改子组件的 打开 状态,还是单击父组件中的按钮时从父组件调用子组件的 toggleMenu() ? 问题答案: 状态应在父组件中进行管理。您可以通过添加属性将值传输到子组件。
我有一个在父组件中生成的事件,子组件必须对此作出反应。我知道在中不建议使用这种方法,我必须执行emit,这非常糟糕。所以我的代码是这个。 正如您所看到的,在无限滚动上被触发,事件被发送到子组件搜索。不仅仅是搜索,因为它是根,所以它正在向每个人广播。 什么是更好的方法。我知道我应该使用道具,但我不知道在这种情况下我该怎么做。
这个问题在这里已经得到了回答,但事情总是在变化。 基本上,父组件获取一些数据,子组件需要这些数据。 这是子组件。
问题内容: 我正在尝试制作一个不错的ApiWrapper组件,以填充各种子组件中的数据。从我阅读的所有内容来看,这应该可以正常工作:https : //jsfiddle.net/vinniejames/m1mesp6z/1/ 但是由于某种原因,当父状态更改时,子组件似乎没有更新。 我在这里想念什么吗? 问题答案: 您的代码有两个问题。 您的子组件的初始状态是通过props设置的。 引用此SO答案: