我正嘗試在頁面加載時更新我的DOM。基本上它應該顯示渲染用戶的數據。但是當我通過記錄器檢查時沒有發生,我發現這些值不存儲在我的this.props值中。但行動被觸發了,減速器已經完成了它的任務。所以我擔心爲什麼我的mapStatToProps不是更新? 這裏是我的容器文件狀態在還原器減少後未更新
import User from "../components/User"
import React from "react"
import {connect} from "react-redux"
import {fetchUsers} from "../action/UserAction"
import PropTypes from 'prop-types'
const UserContainer =React.createClass ({
componentWillMount(){
console.log("componenet will mount")
this.props.dispatch(fetchUsers());
},
render(){
console.log(this.props);
return(
<User
name={this.props.users[0].name}
role={this.props.users[0].role}>
</User>
)
}
})
UserContainer.propTypes = {
users:PropTypes.arrayOf(PropTypes.shape({
name:PropTypes.string.isRequired,
role:PropTypes.string.isRequired
})).isRequired
}
const mapStateToProps= state => {
console.log("state",state)
return{
users:state.users
}
}
export default connect(
mapStateToProps
)(UserContainer)
我減速器文件
export default function reducer(state={users :[]},action){
// console.log("inside reducer")
switch(action.type){
case "FETCH_USERS":{
const newState={...state,users:action.payload}
console.log("newSrate",newState)
return newState
}
default: {
return {
...state
}
}
}
}
和我的操作文件
export function fetchUsers(){
console.log("fetch users")
return {
type:"FETCH_USERS",
payload:"[{'name':'x','roles':'developer'},{'name':'y','role':'god'}]"
}
}
我收到錯誤,如name is not defined for users
,因爲當我檢查this.props用戶是空的array
你的初始狀態是什麼? – JoseAPL
@JoseAPL'state = {users:[]}' – robertklep
我沒有定義getIntialState方法,如果你詢問用戶那麼它顯示爲空數組 – LowCool