2017-08-30 119 views
0

我正在尝试清理我的React/Redux应用程序的引导。在没有实际数据更改的情况下告诉商店更新

创建我的终极版的故事是这样的:

store = createStore(reducer, { ...initialState }); 

而且对我subscribe下一行:

store.subscribe(() => ReactDOM.render(
    <App foo={store.getState().foo} />, 
    document.getElementById('root') 
)); 

当我开始我的应用程序时,App控制的呈现没有发生。我想这是因为我的subscribe没有发射,因为没有数据发生变化。

我知道我可以将subscribe回调移动到一个单独的函数并手动调用它,但我希望不必创建单独的函数。

是否有一个干净的方式告诉我的store对象继续并启动它的subscribe回调而不进行明确的数据更改?

回答

1

是的,没有。

的末尾调用存储订户时,每调用一次调用dispatch(),而不管状态是否实际上是由根减速器函数改变的。所以,你理论上可以做dispatch({type : "DUMMY_ACTION_NO_REDUCER_CARES_ABOUT"}),这将触发用户。

但是,这真的没有意义。这是更简单的事:

const renderApp = () => { 
    ReactDOM.render(
     <App foo={store.getState().foo} />, 
     document.getElementById('root') 
    ); 
}; 

store.subscribe(renderApp); 
renderApp(); 

除此之外,除非你只是有反应,终极版的裸基础实验各地,并试图了解他们是如何工作的,你不应实际手动订阅到店。相反,您应该使用官方的React-Redux库,该库提供了一个connect()函数,可以抽象出为您订阅商店的过程。

相关问题