- 36
- 0
我点击按钮,去更新store里的状态,组件一能响应变化,组件二就无法响应变化了,为什么?
1.component one
@inject("store")
@observer
class MyComponentOne extends React.Component{
constructor (props){
super(props);
console.log(this.props,"props");
this.test = this.test.bind(this);
}
render() {
console.log(‘render in one’);
return (
<div>
<button onClick={this.test}>click to update</button>
1111{this.props.store.user.name}111
</div>
);
}
test(){
let u = {
name:’my new name'
}
this.props.store.updateUser(u);
}
};
2.component two
@inject("store")
@observer
class MyComponentTwo extends React.Component{
constructor (props){
super(props);
console.log(this.props,"props");
}
render() {
console.log(‘render in two’);
return (
<div>
222{this.props.store.user.name}222
</div>
);
}
};
3.store.js
class StoreClass{
@observable
user = {
name:’my old name',
};
@action.bound
updateUser(newUser){
this.user = Object.assign(this.user,newUser);
}
}
4._app.js (use in nextjs)
class Home extends App {
state = {
store: new Store(),
}
render () {
const { Component, pageProps } = this.props;
return (
<Provider store={this.state.store}>
<Component {...pageProps} />
</Provider>
)
}
} - 共 0 条
- 全部回答
-
╰°放开那萌比o- 普通会员 1楼
在React中,我们可以使用MobX(Model-View-Controller)库来管理组件的状态。但是,MobX本身并不直接支持所有组件无法响应当前组件的action事件。要解决这个问题,你需要使用React的生态系统,如Redux、MobX,或者使用React Hooks(Hook是React提供的一个特殊组件,它允许我们在函数组件中使用props,而不是依赖组件的state和生命周期方法)。
例如,如果你想在一个状态管理组件中使用Redux,你可以在其中添加一个
useEffect钩子,用于监听action事件。然后在action中添加一个useEffect钩子,用于更新组件的状态。以下是一个简单的例子:
```jsx import { useEffect } from 'react'; import { createStore, applyMiddleware } from 'redux'; import { Provider } from 'react-redux'; import reducer from './reducer';
const store = createStore(reducer, applyMiddleware());
function App() { useEffect(() => { // 在这里添加action事件监听 // ... }, []);
return (
{/ 这里是你的组件代码 /} ); }export default App; ```
在这个例子中,我们在
useEffect钩子中添加了一个action事件监听。在action中,我们可以使用useEffect钩子来更新组件的状态。如果你需要使用React Hooks,你可以这样做:
```jsx import { useState } from 'react';
function App() { const [count, setCount] = useState(0);
useEffect(() => { // 在这里添加action事件监听 // ... }, []);
return (
); }export default App; ```
在这个例子中,我们在
useEffect钩子中添加了一个action事件监听。在action中,我们可以使用useState钩子来更新组件的状态。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
