无法循环一个数组
问题描述:
我已经创建了一个组件,并从userReducer获取数据并将其绑定到道具,但在呈现方法中,如果我控制数据(即用户数组),我可以在控制台中看到数据但是当我的数据传递给一个函数,并尝试循环阵列上,我得到以下错误无法循环一个数组
遗漏的类型错误:无法读取的不确定
我不理解,我让财产“地图”任何错误。
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux'
import * as userActions from '../../actions/userActions'
class HomePage extends Component {
constructor(props){
super(props);
this.state = {
isLoading :true
}
}
componentDidMount(){
const {dispatch} = this.props
dispatch(userActions.loadUsers());
}
renderData(data){
debugger
data.map(item=>{
return (<div>
<h1>{item.id}</h1>
</div>)
})
}
render() {
// if(!this.props.usersReducer) return <p>Loading ....</p>
return (
<div>
{console.log(this.props.userReducer.data)}
{this.renderData(this.props.userReducer.data)} // if i comment this line i can see the users array in console but if i uncomment this line i am getting undefined in console for console.log(this.props.userReducer.data) too
</div>
);
}
}
HomePage.propTypes = {};
HomePage.defaultProps = {};
const mapStateToProps = (state, props) =>
({
userReducer : state.userReducer
})
export default connect(mapStateToProps)(HomePage);
答
添加一个检查,如果userReducer.data
可在props
就可以调用map
功能之前。
renderData(data){
return data.map(item=>{
return (<div>
<h1>{item.id}</h1>
</div>)
})
}
render() {
// if(!this.props.usersReducer) return <p>Loading ....</p>
const { userReducer: { data } } = this.props;
return (
<div>
{console.log("data ===== > ", data)}
{data
? this.renderData(data)
: (<p>Loading ....</p>)
}
</div>
);
}
答
而且也呼吁调度loadUsers()
安装组件
componentWillMount(){
const {dispatch} = this.props
dispatch(userActions.loadUsers());
}
渲染之前,请务必检查数据之前。我想建议在检查地图时执行它。
renderData(data){
if (!data) {
return (<div>Loading user data...</div>);
} else {
data.map(item=>{
return (<div>
<h1>{item.id}</h1>
</div>)
});
}
}
+0
最好在渲染功能中进行此项检查。如果'userReducer.data'为空,它将阻止执行'renderData'。 – Abhijith
'this.props.userReducer.data'的值是什么? – imcvampire
你是什么原因返回一个div? 我认为它的翻译方式存在一些问题 –
尝试删除'debugger'并将缺失的返回添加到'renderData' – dostu