Javascript 从另一个组件修改组件类变量
我在组件中的Javascript 从另一个组件修改组件类变量,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我在组件中的Hue类中有一个变量: export default class Hue extends Component { state = { toggleState : false, toggleWhite : false } render(){...} ... } 在这个组件中,我可以修改如下值:this.state.toggleState=true 我有另一个处理websocket连接的组件,当我收到数据时,我想修改Hue类中的数据。但是,即
Hue
类中有一个变量:
export default class Hue extends Component {
state = {
toggleState : false,
toggleWhite : false
}
render(){...}
...
}
在这个组件中,我可以修改如下值:this.state.toggleState=true
我有另一个处理websocket连接的组件,当我收到数据时,我想修改Hue
类中的数据。但是,即使我在websocket组件中导入Hue
,我也无法修改该值
我已经尝试过:Hue.state.toggleState=true
,但这是未定义的
我如何从另一个组件访问和修改值,或者是否有解决此问题的其他解决方案
谢谢。如果色调组件是websocket组件的父级,则可以向websocket组件传递一个函数,以便在更新数据时运行
<WebSocketHandlingComponent
onUpdate={latestData => {
this.setState({toggleState: latestData.toggleState});
}}
/>
{
this.setState({toggleState:latestData.toggleState});
}}
/>
不过,目前还不清楚你的应用程序是否就是这样构造的。如果树的不同级别上有多个组件需要访问相同的数据,则可能需要适当的状态管理解决方案,例如
redux
如果色调组件是websocket组件的父级,则可以向websocket组件传递一个函数,以便在更新数据时运行
<WebSocketHandlingComponent
onUpdate={latestData => {
this.setState({toggleState: latestData.toggleState});
}}
/>
{
this.setState({toggleState:latestData.toggleState});
}}
/>
不过,目前还不清楚你的应用程序是否就是这样构造的。如果在树的不同级别有多个组件需要访问相同的数据,则可能需要适当的状态管理解决方案,例如
redux
2种方法:将toggleState作为属性,并在呈现色调或共享状态时将web套接字设置为该属性,如果使用redux,它们基本上会从同一个减速机获取状态。这并不能回答您的问题,但永远不要直接更改您的状态(即This.state.toggleState=true
)。这样做不会触发组件diddupdate,因此不会重新渲染。正确的方法是调用this.setState({toggleState:true})
。请参阅。如何在@floor中执行此操作?2种方法:将toggleState作为属性,并让web套接字在渲染色调或共享状态时设置该属性,如果使用redux,则它们基本上会从同一个减缩器中获取状态。这并不能回答您的问题,但决不能直接更改您的状态(即this.state.toggleState=true
)。这样做不会触发组件diddupdate,因此不会重新渲染。正确的方法是调用this.setState({toggleState:true})
。请看。如何在@floor中执行此操作?它可以工作,但每次我触发setState函数时(使用this.props.onUpdate(myvalue))
,它会被触发两次,比如2次,然后4次,然后8..16..32等。我如何限制一个触发器?Nervermind,这与它是从我的身份验证套接字函数中触发的事实有关。导致每次执行两次。它可以工作,但每次我触发setState函数时(使用this.props.onUpdate(myvalue)
,它会被触发两次,比如2次,然后4次,然后8..16..32等。我如何限制一次触发?Nervermind,这与它是从我的身份验证套接字函数中触发的事实有关。导致每次执行两次。