javascript - React + MobX,用户认证,渲染错误

标签 javascript reactjs mobx mobx-react

我正在使用 MobX 进行状态管理,我还在 localStorage 中保存了一些信息。

这是我的 mobxStore 的样子:

const hydrate = create({
    storage: localStorage, // or AsyncStorage in react-native; default: localStorage
    jsonify: false  // if you use AsyncStorage, here shoud be true; default: true
})

export class VendorStore {
    @observable vendor = {};
    @persist @observable.ref loginState = localStorage.getItem('loginState');
}

var vendorStore = new VendorStore()
hydrate('vendorStore', vendorStore).then(() => console.log('vendorStore has been hydrated'))

export default vendorStore

这个想法是通过 loginState 控制页面的重定向

这就是我的 Dashboard.js 的样子:

if (vendorStore.loginState === false) { return <Redirect to='/signin' /> }
    if (vendorStore.loginState === true) {
        return (
            <div className="Dashboard">
                <h1>Dashboard</h1>
                <Main />
            </div>
        )

它要么没有按预期工作,当 loginStatefalse 时没有重定向,要么像下面这样抛出我的 react 渲染错误:

react-dom.development.js:57 Uncaught Invariant Violation: Dashboard(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null;

如有任何帮助,我们将不胜感激

谢谢

最佳答案

如果 else 在 jsx 上不起作用,请尝试以下

vendorStore.loginState ?  return (
            <div className="Dashboard">
                <h1>Dashboard</h1>
                <Main />
            </div>
        ): return <Redirect to='/signin' /> 

关于javascript - React + MobX,用户认证,渲染错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55153201/

相关文章:

javascript - NeutralinoJS 存储

javascript - 如何修复 ChartJS 中看起来模糊的图表?

javascript - 如何传递 debounce 等待参数

javascript - 渲染后无法更新表的数据

mobx - "Toasts"应该位于 Mobx 状态树中的什么位置?

javascript - 尝试获取单击按钮时输入的时间戳

javascript - 历史记录 Pushstate 和 Popstate 无法正常工作

javascript - 使用 react-testing-library 时如何测试组件是否使用正确的 props 渲染?

reactjs - React 流程中的 Props 类型错误,将 create-react 应用程序转换为 webpack

angular - 你可以将 Angular 组件导出到 Sketch 中吗?