在React中更新数组索引的状态

时间:2018-02-13 15:48:43

标签: javascript reactjs

我试图使用间隔将我的状态更新为下一个数组索引,但这是一个很难的事。有人可以帮忙吗?

    arrayCount() {
     let count = 0;
     let sliced = this.state.data.slice();
      this.setState({
       data: sliced[count++],
      })
    }

    componentDidMount() {
     let timer = setInterval(this.arrayCount, 1000);
    }

2 个答案:

答案 0 :(得分:1)

您没有将func addSSChildViewController(child:NSViewController){ let subView = child.view;//Child let parent = self.view;//Parent self.addChildViewController(child) parent.addSubview(subView) 绑定到正确的上下文。试试这个

arrayCount

答案 1 :(得分:0)

有几种方法可以达到你想要的效果,正如其他人提到的那样,你忘记了arrayCount不知道你用this指的是什么。您需要明确地提供它,否则它将从自己的范围中获取它。在React中,通常有两种方法可以在构造函数中执行此操作:

class MyComponent extends Componenet {
  constructor(props) {
    super(props);
    this.arrayCount = this.arrayCount.bind(this);
  }

  componentDidMount() {
    let timer = setInterval(this.arrayCount, 1000);
  }

  arrayCount() {
    let count = 0;
    let sliced = this.state.data.slice();
    this.setState({
      data: sliced[count++],
    });
  }
  ...

这样可以避免每次使用该方法时都必须.bind(this)

另一种方法(如果你在配置中启用了这样的语法),则不那么详细,你需要做的就是:

class MyComponent extends Componenet {
  componentDidMount() {
    let timer = setInterval(this.arrayCount, 1000);
  }

  arrayCount = () => {
    let count = 0;
    let sliced = this.state.data.slice();
    this.setState({
      data: sliced[count++],
    });
  }
  ...

正如您将注意到arrayCount已被制作成箭头函数,该函数不会从抓取this的位置创建新的上下文。这意味着现在从外部范围中抓取this,在这种情况下是MyComponent类。