将数组添加到父组件的状态

Posted

技术标签:

【中文标题】将数组添加到父组件的状态【英文标题】:Adding an array to state of parent component 【发布时间】:2016-07-22 01:15:38 【问题描述】:

我目前正在使用 Soundcloud API,我正在尝试将返回的用户存储到一个数组中,然后将该数组设置为父对象。问题是当我控制台记录更新状态时,它显示它包含一个数组,但它是空的。以下是我的代码示例:

var SearchBar = React.createClass(
  getInitialState: function()

  return search : '',
          avatar : '',
          

  ,

  onChange: function(e)
    e.preventDefault();
    this.setState(search: e.target.value);
    console.log('does this work', this.state.search)
  
  ,

  onClick: function(e) 
    e.preventDefault();

  ,

   getData: function()
    var userAv = [];
    SC.get('/users',  q: this.state.search, limit: 10 , function(users)
    _.each(users, function(obj)
        userAv.push(obj);
    );
   
    console.log('What is userAv', userAv);
    
  

  )
   this.setState( avatar: userAv, function()
          console.log('What is this.state.avatar', this.state.avatar)
    
   );
,

  render: function()
      return (
          <div id='search-container'>
          <input
            onChange=this.onChange
            id='search-bar'
            type = 'text'
            value=this.state.search
            placeholder = 'Search For Artist here'
            />
          <button
            id="search-button"
            onClick=this.getData
            type = 'button'>
            Submit
            </button>
            <UserList />

          </div>
              )
  
);

【问题讨论】:

您更新this.state.search 的唯一时间是e.target.value()。我看不到你在哪里setState(search: &lt;array&gt;。还是您要更新avatar 我正在尝试更新头像 我明白了。好吧,无论如何,请注意&lt;input&gt; 标签是special in React,需要与常规元素不同的处理方式。这也可能会影响您的程序。 【参考方案1】:

您正在尝试从回调外部的异步请求中获取值,这是错误的,将 setState 移动到回调内部

SC.get('/users',  q: this.state.search, limit: 10 , function(users) 
  this.setState( avatar: users );
.bind(this));

还可以将 getInitialState 中的 avararString 更改为 Array

【讨论】:

以上是关于将数组添加到父组件的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应中将数组从子组件发送到父组件?

将变量从子组件传递到父组件

在 React Native 中将状态从子组件传递到父组件

如何在 Reactjs 中将数据从子组件传递到父组件? [复制]

将子组件添加到父组件并将父组件添加到文档

如果li在react功能组件中具有活动类,如何将类添加到父元素ul