访问对象内数组的长度会给我"类型错误:无法读取未定义的属性'length'"



当我试图访问从mapstatetoprops获得的对象内部数组的长度时,我得到了一个错误TypeError: Cannot read property 'length' of undefined。。。在我的actions文件夹中,我创建了一个函数getuserdata,该函数进行api调用并成功返回一个对象。在我的组件中,我在componentdidMount中调用this.props.getserdata,并使用getuserdata映射statetoprops currentUser state。。。尽管tt返回一个对象,但它不允许我访问其中一个属性数组的长度。。。。我的mapstatetoprops写道:

currentUser:state.currentUser.getUserData

组件文件夹


class Users extends Component {
componentDidMount() {
this.props.getUserData();
this.props.getOtherUsers();
}
render() {
console.log(this.props.currentUser.myStocks.length,'current user')

return (
<Container>

</Container>
)
}
};
function mapStateToProps(state) {
return {
currentUser: state.currentUser.getUserData, 
filteredUsers: state.filteredUsers.getOtherUsers,
getUsersError: state.users.getUsersError
};
}
export default compose(
connect(mapStateToProps, { getUserData, getOtherUsers }),
requireAuth
)(Users);

操作文件夹:


export const getUserData = () => async (dispatch) => {
try {
const { data } = await axios.get('/api/user/profile', {
headers: { authorization: localStorage.getItem('token') },
});
// console.log(data.myStocks[0],'inform')
dispatch({ type: GET_USER_DATA, payload: data });
} catch (e) {
dispatch({
type: GET_USER_DATA_ERROR,
serverError: e,
clientError: 'Something went wrong please refresh try again',
});
}
}

如果this.props.currentUser应该由this.props.getUserData()获得,那么问题可能是您的API调用没有完成,而react使用render方法。

最新更新