React clone children&附加道具不起作用

时间:2016-11-08 05:30:37

标签: reactjs

我有这段代码

  render() {
    const { schools, currentSchool, claims } = this.state;
    let loggedIn = this.state.loggedIn ? true : false;
    let user = this.state.user;

      var children = React.Children.map(this.props.children, function (child) {
         return React.cloneElement(child, {
             **claims: this.state.claims**
          })
  })
    return (
      <div>
        <HeaderContainer
           user={user}
           claims={claims}
           onLogin={this.onLoginButtonClick} />

        { loggedIn && <NavContainer claims={claims}/> }

          {children}     

        <Footer/>
      </div>
     )
    }
  }
但是,由于某种原因,我无法访问this.state.claims&#34;这个&#34;未定义。为什么这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

有两种方法可以实现这一点,在渲染函数中使用= this let that = this; 然后在函数而不是this.state.claims中使用:

return React.cloneElement(child, {//use that variable here } )

或通过使用箭头功能

实现此目的的另一种方式

var children = this.props.children.map(child => { return React.cloneElement(child, { **claims: this.state.claims** })

javascript是关于范围的,javascript中的变量是函数作用域而不是块作用域。在javascript中阅读有关范围的更多信息。