【问题标题】:Redux not connecting to React componentRedux 未连接到 React 组件
【发布时间】:2017-02-09 17:24:03
【问题描述】:

我一直在玩 Redux,但我似乎无法让它与 React 连接。我正在使用connectmapStateToProps,但我商店中的道具没有被传递到我的组件中。也许有人可以解释为什么我的代码不起作用?我猜它与 mapStateToProps 函数有关。

这是我得到的代码:

import { connect, Provider } from 'react-redux';
import { createStore, combineReducers } from 'redux';
import React from 'react';
import ReactDOM from 'react-dom';`enter code here`


const greetReducer = ( state = '', action ) => {

  if ( action.type === 'greet' ) {

  state = action.greeting

  }

  return state;

};

const runReducer = ( state = '', action ) => {

  if ( action.type === 'run' ) {

    state = action.running

  }

  return state;

};

const reducers = combineReducers({

  greetState: greetReducer,
  runState: runReducer

});

const store = createStore( reducers );

store.dispatch({

  type: 'greet',
  greeting: 'Hello'

});

console.log(store.getState());

store.dispatch({

  type: 'run',
  running: 'Running like the wind'

});

const App = (props) => <h1>{props.greeting}</h1>;

const mapStateToProps = function(store) {
  return {
    greeting: store.getState().greetState
  };
}

connect(mapStateToProps)(App);

ReactDOM.render(
  <Provider store={store}><App /></Provider>,
  document.getElementById('root')
);

【问题讨论】:

    标签: javascript reactjs redux


    【解决方案1】:

    connect 函数(或者,更确切地说,connect 返回的函数)不会修改您的组件;它返回一个新组件,您需要将其保存到变量中:

    const ConnectedApp = connect(mapStateToProps)(App);
    
    ReactDOM.render(
      <Provider store={store}><ConnectedApp /></Provider>,
      document.getElementById('root')
    );
    

    【讨论】:

    • 谢谢!这就像一个魅力。对于可能查看此问题的其他任何人,我犯的另一个错误是输入 store.getState().greetState - 它应该只是 store.greetState
    • @HappyKoala:澄清一下,mapState 的第一个参数不是 store 对象本身。它实际上是 store 中的 state 对象。虽然变量本身的名称并不重要,但“正确”的名称应该是 state,所以示例应该是 state.greetState
    • @markerikson 谢谢,这进一步澄清了它。如果世界是一个 JavaScript 应用程序,而 Dan Abramov 是它的架构师,我只能这么说。 Redux 应该让我编写不幸的 React 应用程序变得比现在更愉快。
    猜你喜欢
    • 2017-12-17
    • 2017-06-23
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2020-11-01
    • 2019-09-05
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多