首页 > 解决方案 > React + MobX,用户身份验证,渲染错误

问题描述

我正在使用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>
        )

它要么没有按预期工作,要么没有重定向 when loginStateis false,或者抛出我反应渲染错误,如下所示:

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;

任何帮助,将不胜感激,

谢谢

标签: javascriptreactjsmobxmobx-react

解决方案


If else不要在 jsx 上工作,试试下面

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

推荐阅读