javascript array.includes不';我不能正常工作

javascript array.includes不';我不能正常工作,javascript,arrays,reactjs,include,Javascript,Arrays,Reactjs,Include,首先,我是前端的新手,所以我对javascript+react的了解基于教程 我有一个设置为组件属性的对象。此对象具有一个数组作为属性 因此,在组件内部,无论是在函数中还是在呈现方法中,如果一个组件写入console.log(object.property) 它打印阵列,没有错误 但是如果我尝试使用.includes方法 console.log(object.property.includes(“字符串”)) 它抛出以下错误: react dom.development.js?cada:1240

首先,我是前端的新手,所以我对javascript+react的了解基于教程

我有一个设置为组件属性的对象。此对象具有一个数组作为属性

因此,在组件内部,无论是在函数中还是在呈现方法中,如果一个组件写入
console.log(object.property)

它打印阵列,没有错误

但是如果我尝试使用.includes方法

console.log(object.property.includes(“字符串”))

它抛出以下错误:

react dom.development.js?cada:12404未捕获类型错误:无法读取 未定义的属性“includes”

那么,仅仅为了使用这种方法,数组如何变成未定义的呢

我发现的解决方法是这样的:

   render() {
    let self = this;
    let user;
    return(
      {
        this.props.otherarray.map(function(var) {
            self.user = self.props.object.property.includes("string") 
        })
        console.log(this.user)
      }
    );
   }
然后它就起作用了


我错过了什么?它是关于javascript上下文还是关于react的东西

console.log
输出会误导您。我猜
object
来自一个异步作业,您在第一次渲染中看到的数组是
undefined
,而在第二次渲染中看到的数组是原样。
未定义
不是问题,但如果您尝试对不存在的属性(如
映射
)使用方法,
包含
是问题,您会在问题中引用错误。所以,你需要检查这个属性是否存在。我不知道您的组件设置,但以下是一个示例:

const对象={
物业:[“foo”、“bar”、“baz”]
}
const fakeRequest=()=>新承诺(解析=>
setTimeout(()=>解析(对象),1000)
);
类应用程序扩展了React.Component{
状态={
对象:{},
}
componentDidMount(){
fakeRequest().then(this.setState({object}))
}
render(){
const{object}=this.state;
object.property&&console.log(object.property.includes(“foo”))
返回Foo;
}
}
render(,document.getElementById(“根”))


在解决问题之前,您是如何使用它的(在您的问题中包括特定的代码,该代码实际上没有意义)。你到底想干什么<代码>映射()
需要一个
返回
或获取所有
未定义
值的数组,您通常使用
var
在映射回调中执行一些操作
包含
返回true或FALSE这
对象
属性来自异步操作吗?似乎
self.props.object.property
不是数组。它确实有效,让我明白一些事情。我有一个mapDispatchToProps方法,其中定义了要分派的请求。然后所有这些方法都在componentWillMount方法上执行。然后我有一个reducer,它将响应放在一个state对象中,我将这个对象映射到MapStateTrops方法中的props。我想整个过程都是在后台完成的?(我只是遵循了在遗留代码中是如何完成的)为什么“object.property&&console.log(object.property.includes(“foo”)”等待属性不被定义?我可以阅读什么来理解这种使用运算符的方法?欢迎您。您使用的是Redux,这里解释的是常规过程。但是,延迟本身是关于一个异步操作的,您可能正在其他远程的地方获取数据。我们在这里使用
&&
,因此我们保证是否存在
对象.property
,然后记录它。您将在组件中经常使用此逻辑:条件渲染。不仅仅是日志记录,还用于呈现数据本身。因此,请阅读以下内容:并在React中搜索条件呈现。它将帮助你理解逻辑。另外,不要使用
componentWillMount
,因为它在将来的版本中将被弃用。您可以改用
componentDidMount