Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';长度';react渲染方法中未定义的_Javascript_Reactjs - Fatal编程技术网

Javascript 无法读取属性';长度';react渲染方法中未定义的

Javascript 无法读取属性';长度';react渲染方法中未定义的,javascript,reactjs,Javascript,Reactjs,我编写了这个组件,我需要提取followers数组的长度来显示每个用户在其个人资料中有多少followers。fetchUser()调用后端API。我使用Redux并重新选择 import MessageList from "../containers/MessageList"; import UserAside from "./UserAside"; import { connect } from 'react-redux'; import { fetc

我编写了这个组件,我需要提取followers数组的长度来显示每个用户在其个人资料中有多少followers。fetchUser()调用后端API。我使用Redux并重新选择

import MessageList from "../containers/MessageList";
import UserAside from "./UserAside";
import { connect } from 'react-redux';
import { fetchUser } from "../store/actions/users";
import { selectFetching,selectUserToCheckProfile } from '../store/selectors'
import { createStructuredSelector } from "reselect";

class Profile extends Component {

    componentDidMount() {
        const { fetchUser } = this.props;
        fetchUser(this.props.match.params.userId)
    }
    render() {
        const {fetching,userToCheckProfile}=this.props
        console.log(userToCheckProfile)
       const followers=userToCheckProfile.followers.length
     

        return (
            <div className="row">
                <MessageList userToVisit={this.props.match.params.userId} {...this.props} />
               {
                   !fetching? <UserAside
                   {...this.props}  userToCheckProfile={userToCheckProfile}
               />:'waiting.....'
               }
            </div>
        )
    }
}

const mapStateToProps=state=>createStructuredSelector({
    fetching:selectFetching,
    userToCheckProfile: selectUserToCheckProfile

})
const mapDispatchToProps = dispatch => ({
    fetchUser: (id) => dispatch(fetchUser(id))
})
export default connect(mapStateToProps, mapDispatchToProps)(Profile);
从“./containers/MessageList”导入消息列表;
从“/UserAside”导入UserAside;
从'react redux'导入{connect};
从“./store/actions/users”导入{fetchUser};
从“../store/selectors”导入{selectFetching,selectUserToCheckProfile}
从“重新选择”导入{createStructuredSelector};
类概要文件扩展了组件{
componentDidMount(){
const{fetchUser}=this.props;
fetchUser(this.props.match.params.userId)
}
render(){
const{fetching,userToCheckProfile}=this.props
console.log(userToCheckProfile)
const followers=(userToCheckProfile&&userToCheckProfile.followers&&userToCheckProfile.followers.length)|0;
返回(
{
!正在提取?:“正在等待…”
}
)
}
}
const mapStateToProps=state=>createStructuredSelector({
抓取:选择抓取,
userToCheckProfile:选择userToCheckProfile
})
const mapDispatchToProps=调度=>({
fetchUser:(id)=>dispatch(fetchUser(id))
})
导出默认连接(mapStateToProps、mapDispatchToProps)(配置文件);

因为追随者是空的“追随者:[]”尝试此操作,因为追随者仍然未定义?:const followers=userToCheckProfile&&userToCheckProfile.followers?userToCheckProfile.followers.length:null该错误消息表示followers未定义。就像@charly1212编写的那样,您可以检查是否定义了followers,并且它有一个类似这样的长度属性:if(userToCheckProfile.followers&&userToCheckProfile.followers),如果这是真的,那么您可以使用.length,如果不是,则将const followers设置为0。@您必须记住,render()方法基本上会在任何属性或状态更改时调用。您必须确保在发生这种情况时定义了状态和属性。简单来说,使用destructure并添加默认值
const{fetching,userToCheckProfile={followers:[]}}=this.props
{messages: Array(1), followers: Array(0), _id: "5f89b7e4f877294944d8d706", email: "kanye@kanye.com", username: "kanye", …}
email: "kanye@kanye.com"
followers: []
messages: ["5f89b856f877294944d8d707"]
password: "$2b$10$jSP28GIBMWirGuMBf4sp/eTBXgsT3MgRT/yfoxQBN9o69aPeDUeie"
profileImageUrl: ""
username: "kanye"
__v: 1
_id: "5f89b7e4f877294944d8d706"
__proto__: Object}
import MessageList from "../containers/MessageList";
import UserAside from "./UserAside";
import { connect } from 'react-redux';
import { fetchUser } from "../store/actions/users";
import { selectFetching,selectUserToCheckProfile } from '../store/selectors'
import { createStructuredSelector } from "reselect";

class Profile extends Component {

    componentDidMount() {
        const { fetchUser } = this.props;
        fetchUser(this.props.match.params.userId)
    }
    render() {
        const {fetching,userToCheckProfile}=this.props
        console.log(userToCheckProfile)
        const followers=(userToCheckProfile && userToCheckProfile.followers && userToCheckProfile.followers.length) || 0;
     

        return (
            <div className="row">
                <MessageList userToVisit={this.props.match.params.userId} {...this.props} />
               {
                   !fetching? <UserAside
                   {...this.props}  userToCheckProfile={userToCheckProfile}
               />:'waiting.....'
               }
            </div>
        )
    }
}

const mapStateToProps=state=>createStructuredSelector({
    fetching:selectFetching,
    userToCheckProfile: selectUserToCheckProfile

})
const mapDispatchToProps = dispatch => ({
    fetchUser: (id) => dispatch(fetchUser(id))
})
export default connect(mapStateToProps, mapDispatchToProps)(Profile);