2017-01-17 131 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;