2017-06-15 77 views
3
class VideoList extends Component { 
    constructor(props) { 
    super(props); 

    this.videoList = props.videos.map((video) => { 
     return <VideoListItem video={video} /> 
    }) 
    } 

    render() { 
    return (
     <ul className="collection"> 
      {this.videoList} 
     </ul> 
    ) 
    } 
} 

我只是想知道是否允許我在反應組件中擁有自己的屬性。可以在反應組件中擁有自己的屬性嗎?

回答

0

是有意義的有這樣的屬性,但只有當你不想渲染。 既然你正在渲染它,它可能會更有意義,把它放在狀態。 因爲如果您更新屬性 - 就像現在一樣,您可能無法在UI上看到新值。

您可以在放什麼用下面的圖片作爲指導,而不是把狀態:

enter image description here

它是由丹·阿布拉莫夫創建如果我沒看錯的。

+0

感謝您的指導!這個指南可以幫助我很多:) – hytm

+0

也許,我設置'this.videoList'的東西是我可以從道具計算出來的,所以它不應該設置爲狀態。 – hytm

1

我想你是指將videoList存儲到組件實例?

你可以存儲的狀態的影片名單,但似乎不必要做到這一點,我將簡化VideoList是一個stateless functional component呈現的傳遞中作爲道具的影片名單:

const VideoList = ({ videos }) => (
    <ul className="collection"> 
    {videos.map(video => <VideoListItem video={video} />)} 
    </ul> 
); 

的官方文檔實際上並沒有解釋上面的語法,但它基本上是一個沒有狀態的React組件的語法糖,它只接受props({ videos })語法爲ES6 DestructuringVideoList組件接收props,並且此語法將props.videos作爲組件上的變量提取。

此外,在渲染項目列表時,您應爲每個VideoListItem提供某種唯一的key,例如,

<VideoListItem key={video.id} video={video} /> 
相關問題