我正在寻找一种方法来根据对另一个的输入重新渲染一个反应组件。我正在使用没有Flux / Redux的反应并且已经承诺了足够的项目,我认为这不是我现在可以采取的方向。
我想做的事情看起来像这样:
class Component1 extends React.Component{
constructor(props){
super(props);
window.global = 0;
this.state = {};
this.changeGlobal = this.changeGlobal.bind(this);
}
changeGlobal(value){
window.global = value;
}
render(){
return (<div>
<a onClick={() => changeGlobal(1)}>One</a>
<a onClick={() => changeGlobal(2)}>Two</a>
<a onClick={() => changeGlobal(3)}>Three</a>
</div>);
}
}
class Component2 extends React.Component
{
constructor(props){
super(props);
this.state = {};
}
render(){
if(window.global === 0){
return <Something/>;
}
if(window.global === 1){
return <SomethingElse/>;
}
etc...
}
}
除了每次Component1更改全局值时我都希望Component2重新渲染。有谁知道如何实现这一目标?
答案 0 :(得分:1)
我设法使用事件来实现这一目标:
faces = front_cascade.detectMultiScale(
img, # don't forget this!
scaleFactor=1.1,
minNeighbors=5,
minsize=(30,30)
)
答案 1 :(得分:0)
Redux实现与React完全不同,它意味着您可以随时随地实现它,无论您想要什么,以及您只想要的组件,它都不是最好的编写代码也不是最好的练习,但仍有可能,只是说。好吧,如果你想正确更新一个组件(也就是要进行更改),你需要改变那个组件状态,否则,即使你完成了将一个值从一个组件传递到另一个组件,也永远不会呈现这些组件。
我不是这方面的专家,但我的建议是将Component2的状态链接到它的道具,因此可以通过外部组件进行修改。最常见的方法是将两个组件包装在父组件中,然后,每当Component1中的值发生更改时,它将触发将由父组件处理的事件(或函数),然后稍后将该值传递给Component2它的道具和(可能)触发一个将改变Component2状态的函数。