gpt4 book ai didi

javascript - Redux-react 连接功能不适用于根组件

转载 作者:行者123 更新时间:2023-12-03 04:20:04 24 4
gpt4 key购买 nike

我正在使用中间件从indexeddb 恢复Redux 存储。我想在根组件中使用该数据进行路由,以检查用户是否已连接。但似乎 connect 函数并未将根组件 state 连接到 Redux。

当我调试时,我看到 mapStateToProps 从未真正运行。这是index.js的相关部分:

class AppProvider extends Component {
constructor (props) {
super(props)
this.state = {}
}

componentWillMount () {
persistStore(store, {storage: localforage}) // Populates the store from indexedDB
}

render () {
return (
<Provider store={store}>
<Router history={history}> // Here I need the user from redux
<Route path="/login" render={() => (
this.state.user ? ( <Redirect to="/dashboard"/> ) : ( <LoginPage/> )
)}/>
</Router>
</Provider>
)
}
}

function mapStateToProps (state, ownProps) {
return {
user: state.user // function never runs!
}
}

withRouter(connect(mapStateToProps, {})(AppProvider))

render(
<AppProvider/>,
document.getElementById('root')
)
<小时/>

更新:尝试此操作时:

const Root = withRouter(connect(mapStateToProps, {})(AppProvider))

render(
<Root/>,
document.getElementById('root')
)

我明白

Uncaught TypeError: Cannot read property 'route' of undefined

最佳答案

您没有使用连接的组件。

withRouterconnect 都不会修改原始组件。他们只是返回一个新组件。

试试这个;

const AppProviderWithRedux = withRouter(connect(mapStateToProps, {})(AppProvider))

render(
<AppProviderWithRedux/>,
document.getElementById('root')
)

关于javascript - Redux-react 连接功能不适用于根组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com