javascript - 使用 react-router,redux 将无法工作

标签 javascript reactjs react-router redux redux-thunk

我看过很多类似的问题,没有一个适合我。

关于

this.props.children doesn't always inherit the context from its parent

Could not find "store" in either the context or props

//store config
const createHistoryWithBasename = (historyOptions) => {
    return useBasename(createHistory)({
        basename: '/user_home'
    })
}
const finalCreateStore = compose(
    applyMiddleware(thunk, createLogger()),
    reduxReactRouter({
        createHistory: createHistoryWithBasename }),
        devTools()
    )(createStore);

export function configureStore(initialState) {
    const store = finalCreateStore(rootReducer, initialState);
    return store;
}

索引文件,所有路由嵌套在Provider中。

//entry file
let routes = (
    <Route path="/" component={UserHome}></Route>
);

ReactDom.render(
    <Provider store={store} >
        <ReduxRouter>
            {routes}
        </ReduxRouter>
    </Provider>,
    rootElement
);

组件。我登录了 this.props,没有 dispatch 属性。而context的参数是一个空对象。

//user_home.js
class UserHome extends React.Component {
    constructor(props, context){
        //context is empty Object
        super(props, context);
    }
    render() {
        //this.props.dispatch is undefined
        return (
            <div className="container">
               test
            </div>
        );
    }

}

function mapStateToProps(state){
    return state;
}
export default connect(mapStateToProps, {
    pushState
})(UserHome);

也许,这是一个简单的问题,但我花了很多时间。希望得到你的帮助。谢谢!

最佳答案

也许我们可以将 Action 创建器注入(inject)连接

import * as ActionCreators from './actions/user_actions';

//we can use the actions in ActionCreators to dispatch the action.

export default connect(mapStateToProps, {
    pushState: pushState,
    ...ActionCreators
})(Component);

行动

//action file
export function xxAction(){
    return dispatch =>{
        dispatch({
            type: 'XX_ACTION'
        });
    }
}

该方案适用于子组件中的 Action 调度,存在一定的局限性,期待更好的方案。

关于javascript - 使用 react-router,redux 将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248835/

相关文章:

reactjs - 我应该对功能组件使用 _myMethod 吗?

javascript - 响应美化 URL

reactjs - 条件路由在 React Router 中不起作用

apache - ReactJS (create-react-app) 在端口 80 上运行

javascript - 字符串替换在 jQuery 中的复选框取消选中事件中不起作用

javascript - onclick 在一个 html 元素上更改 css

javascript - 在 Chrome 中,警报在执行弹出窗口之前不会显示 HTML

html - React flex Dropdownlist 不 float 在内容上

javascript - React 获取数据丢失

javascript - 尝试在产品中构建 ReactJS 应用程序 - 模块构建失败 : SyntaxError: Unexpected token