首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确延迟渲染

如何正确延迟渲染
EN

Stack Overflow用户
提问于 2018-09-18 09:29:29
回答 2查看 174关注 0票数 2

//offline.js

代码语言:javascript
复制
import { offline } from '@redux-offline/redux-offline';
import offlineConfig from '@redux-offline/redux-offline/lib/defaults';

const config = params => ({
  ...offlineConfig,
  persistCallback: params.persistCallback
});

export default params => offline(config(params));

//App.js

代码语言:javascript
复制
class App extends Component {

  componentWillMount() {
    this.store = Reactotron.createStore(
      reducers,
      undefined,
      compose(
        applyMiddleware(ReduxThunk),
        offline({ persistCallback: this.startApp })
      )
    );
  }

  startApp = () => {
    if (this.store.getState().auth.loggedIn) {
      const resetAction = StackActions.reset({
        index: 0,
        actions: [NavigationActions.navigate({ routeName: 'summmary' })],
      });
      this.props.navigation.dispatch(resetAction);
    }
  }

  render() {
    return (
      <Provider store={this.store}>
        <MainNavigator />
      </Provider>
    );
  }
}

export default App;

我有2个屏幕summaryloginlogin屏幕将在默认情况下呈现。但是,我添加了这个逻辑this.store.getState().auth.loggedIn来检查它是否为真,然后将屏幕分派给summary,但我得到的是Cannot read property 'dispatch' of undefined

EN

回答 2

Stack Overflow用户

发布于 2018-09-18 20:37:24

包装在MainNavigator中的屏幕组件可以使用导航属性。

您试图从您的应用程序组件中使用它,该组件在您的导航器的之外是,所以它是未定义的。

在这种情况下,建议使用文档中所述的“不使用导航道具进行导航”方法:https://reactnavigation.org/docs/en/navigating-without-navigation-prop.html

票数 0
EN

Stack Overflow用户

发布于 2018-09-18 20:47:23

因为作用域中没有navigation对象,所以会出现这个错误。

理想情况下,您的App.js文件本身应该有StackNaviator类。所以,在那里声明的第一个对象,将是您将要到达的第一个屏幕。在那里,您可以编写将其分派到另一个屏幕的逻辑,因为您也在作用域中有navigation对象。

一些关于-

你的App.js

代码语言:javascript
复制
createStackNavigator({
  Home: {
  screen: HomeScreen}
})

因此,您的主屏幕将首先启动,您在App.js中编写的有关分派操作的逻辑可以移动到此HomeScreen

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52377686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档