3
私はReduxで遊んでいましたが、Reactに接続することはできません。 connect
をmapStateToProps
と使用していますが、私の店の小道具が私のコンポーネントに渡されていません。おそらく誰かが私のコードがうまくいかない理由を明らかにすることができたでしょうか?私はそれがmapStateToProps関数と何かを持っていると思います。ReduxがReactコンポーネントに接続していません
ここで私が持っているコードです:
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')
);
ありがとうございました!それは魅力のように働いた。この質問を読んだ人には、別の間違いとしてstore.getState()をタイプしていました。greetState - ちょうどstore.greetStateでなければなりません。 –
@HappyKoala:明確にするために、 'mapState'の最初の引数はストアオブジェクトではありません自体。実際にはストア内の_state_オブジェクトです。変数自体の名前は重要ではありませんが、 "正しい"名前は 'state'なので、例は' state.greetState'です。 – markerikson
@markeriksonありがとう、それはそれをさらに明確にします。世界だけがJavaScriptアプリケーションで、Dan Abramovがそのアーキテクトだったなら、それは私が言うことができるすべてです。 Reduxは、私の不幸なReactアプリケーションを、既にそれよりも喜んで書いておくべきです。 –