Javascript 为什么可以';我不能推到状态为的数组吗?

Javascript 为什么可以';我不能推到状态为的数组吗?,javascript,reactjs,react-native,ecmascript-6,Javascript,Reactjs,React Native,Ecmascript 6,我似乎无法从API将对象推送到处于状态的数组。这是我的密码 async _fetchData(number){ try{ await console.log('asd',number) let response = await fetch( 'https://www.beanlinked.com/wp-json/wp/v2/media/'+this.state.News[number].featured_media)

我似乎无法从API将对象推送到处于状态的数组。这是我的密码

      async _fetchData(number){
        try{
          await console.log('asd',number)
          let response = await fetch( 'https://www.beanlinked.com/wp-json/wp/v2/media/'+this.state.News[number].featured_media)
          let responseJson = await response.json()
          await console.log("responseJson")
          let tempURL = responseJson.guid
          let url = tempURL.rendered

          for (var i = 0; i < this.state.News.length; i++) {
            const items = this.state.News;
            items[number].URLOnSever = url;

          }

          this.state.News.push({
            URLOnSever : url
          })
          console.log("imageurl",this.state.News.URLOnSever)

          return url
        }catch(e){
          console.log('problem'+e)
        }
      }
async\u获取数据(数字){
试一试{
等待控制台日志('asd',编号)
let response=等待取数('https://www.beanlinked.com/wp-json/wp/v2/media/“+this.state.News[number].特色媒体)
让responseJson=wait response.json()
wait console.log(“responseJson”)
让tempURL=responseJson.guid
让url=tempURL.rendered
for(var i=0;i

我只想将新URL推送到
this.state.News

不要修改state,这是您使用
数组所做的#推送
——修改state内部的数组。改为使用创建新数组,将旧数组和添加的元素设置为状态,而不是推送到旧数组:

this.setState(prevState => ({
  News: [
    ...prevState.News,
    { URLOnServer: url }
 ]
}));

这将
News
设置为前一状态的
News
数组内容(via)加上新对象。它与您的代码相同,但不直接改变
状态。了解更多信息。

将某些内容推送到存储在状态中的数组的简单方法就是获取状态并将其存储在变量中。将项目推送到该变量并设置状态

const temp = this.state.list;
temp.push(newItem);
this.setState({ list: temp });

我不太明白。您的方法看起来像是创建一个包含两个对象的数组:previous state和{URLOnServer:url}@应永征是的。。请看安德鲁答案中的链接。或者更具体地说@YingyongZheng抱歉没有回复,我的收件箱里没有收到你的回复。必须使用spread语法将以前新闻的元素与新对象一起传播到数组中。例如:
var-foo=[1,2,3]var-bar=[…foo]
-
bar
现在是一个新数组,其元素与
foo
相同:
[1,2,3]
。嘿,我试试你的代码。很抱歉,我没有清楚地描述我的情况。这不是没有定义的。。。你记录的东西不对
this.state.News[this.state.News.length-1].URLOnServer