Reactjs 告诉存储更新而不进行实际数据更改

Reactjs 告诉存储更新而不进行实际数据更改,reactjs,redux,store,Reactjs,Redux,Store,我正在尝试清理React/Redux应用程序的引导 我创建的redux故事如下: store = createStore(reducer, { ...initialState }); 在下一行,我订阅: store.subscribe(() => ReactDOM.render( <App foo={store.getState().foo} />, document.getElementById('root') )); store.subscribe(()=>Re

我正在尝试清理React/Redux应用程序的引导

我创建的redux故事如下:

store = createStore(reducer, { ...initialState });
在下一行,我
订阅

store.subscribe(() => ReactDOM.render(
  <App foo={store.getState().foo} />,
  document.getElementById('root')
));
store.subscribe(()=>ReactDOM.render(
,
document.getElementById('root'))
));
启动应用程序时,
App
控件的呈现不会发生。我想这是因为我的
subscribe
没有启动,因为数据还没有更改

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

有没有一种干净的方法可以告诉我的
存储
对象继续并启动它的
订阅
回调,而不进行显式的数据更改?

有,也没有

每次调用
dispatch()
,都会在调用结束时调用存储订阅服务器,而不管root reducer函数是否实际更改了状态。因此,理论上,您可以执行
分派({type:“DUMMY\u ACTION\u NO\u REDUCER\u care\u ABOUT”})
,这将触发订阅者

然而,这真的毫无意义。这样做要简单得多:

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

store.subscribe(renderApp);
renderApp();
constrenderapp=()=>{
ReactDOM.render(
,
document.getElementById('root'))
);
};
store.subscribe(renderApp);
renderApp();
除此之外,除非你只是在尝试React和Redux的基本知识,并试图了解它们是如何工作的,否则你不应该手动订阅商店。相反,您应该使用官方的React Redux库,它提供了一个
connect()
函数,可以为您抽象订阅商店的过程