2017-01-17 207 views
1

在我的React应用程序中,我想呈现一个道具值,但它不存在,直到道具已经更新,发生在渲染完成后。反应:试图渲染道具后填充后渲染

this.props.users是一个对象,所以我用的钥匙,针对他们使用Object.keys()转化为一个数组,然后映射通过子元素:

// ... 
render() { 
    return { 
    <div className='users-list'> 
     <h4>Users List</h4> 
     {!isLoaded(users) ? '' : 
      Object.keys(users).map((key, i) => <p>{users[key].email}</p>) 
     } 
    </div> 
    } 
} 

这工作,但我花了很多黑客攻击和修改代码以达到目标。有没有更好的/更有说服力的方式去解决这个问题?因为我想这是真的很常见的情况!组件生命周期是否进入?

任何帮助/建议表示赞赏。

+1

你做正确。 –

+1

我真的没有看到这个问题。代码很容易读取。我可以告诉你只需要在用户加载后渲染用户,并且从代码中我可以看出用户也不一定会出现在第一个渲染器上。在反应代码库 –

+0

中,这是一件很常见的事情。那么很好知道:)我觉得事先定义列表,然后渲染它可能会更好。但我尝试了这一点,显然它试图在渲染之前将'users'值赋给变量,在那个时候它是'null'。只是想确定这不是不好的做法。谢谢。 – Paulos3000

回答

0

给它默认?

const users = this.props.users || {}; 

使用ES6和解构:

const { users = {} } = this.props;