私は簡単な例を得ようとしています。以下にコードを示します。ReduxでmapStateToPropsを使用する
state
から来ている
mapStateToProps = (state) => {}
:でこの例で
、?私はちょうど私が通過しているものについて少し混乱していますか?
connect(mapStateToProps)(TodoApp)
はmapStateToProps
に返された状態をTodoApp
に「バインド」し、this.props
でアクセスできることを理解しています。
私は、私は[OK]を更新TodoApp
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux'
import { connect } from 'react-redux'
import { createStore } from 'redux'
import { combineReducers } from 'redux'
const stateObject = [
{
'id': 1,
'name': 'eric'
},
{
'id': 2,
'name': 'john'
}
]
const todo = (state, action) => {
switch (action.type) {
case 'ADD_TODO':
return {
id: action.id,
text: action.text
}
default:
return state
}
}
const todos = (state = stateObject, action) => {
switch (action.type) {
case 'ADD_TODO':
return [
...state,
todo(undefined, action)
];
default:
return state
}
}
const store = createStore(todos)
//confused by what is happening here
const mapStateToProps = (state) => {
return {
?: ?
}
}
const TodoApp =() => {
//How do I get this to print out the current props?
console.log(this.props)
return (
<div>
Some Text
</div>
)
}
connect(mapStateToProps)(TodoApp)
ReactDOM.render(
<Provider store={store} >
<TodoApp />
</Provider>,
document.getElementById('root')
)
内の現在の状態をプリントアウトすることができ、このコードに行うには何が必要です:
const mapStateToProps = (state) => {
return {
names: state
}
}
const TodoApp =() => {
console.log(this.props)
return (
<div>
Some Text1
</div>
)
}
const ConnectedComponent = connect(mapStateToProps)(TodoApp);
ReactDOM.render(
<Provider store={store} >
<ConnectedComponent />
</Provider>,
document.getElementById('root')
)
しかし、私はまだconsole.log(this.props)
ためundefined
を取得しています。
私は間違っていますか?
'mapStateToProps =(state)=> {}' - 'state'はあなたのreduxストアの現在の値です。 – fubar
これは意味があります。私が 'TodoApp'の中で' console.log(this.props) 'を実行すると、どのように戻ってきますか? 'mapStateToProps'の中に' {users:state} 'を返します。 –
機能コンポーネントを持つ 'this'はありません。 'const TodoApp =(props)=> {'に変更して、その小道具にアクセスすることができます。 – DonovanM