0
我正在採取反應,並且需要關於如何構建組件樹的一些建議。react:如何構造組件
我想建立與它
我有相關的過濾器泛型列表:
List組件:顯示項目的列表。道具:
- 兒童:支柱(函數)用於呈現列表
(item) => <li className="list-group-item" key={item.id}> {item.name} </li>
- 列表的每個項:對象的陣列
- 兒童:支柱(函數)用於呈現列表
過濾器組件:一串輸入/選擇用於過濾該列表
- filterList:含有數組所有字段名
- 的onChange:字段的值(狀態在上述成分)
ListAndFilterContainer:當字段改變
- stateValues調用函數包含的狀態下的過濾器,並將其傳遞到列表
- 列表:傳遞給列表組件的項目列表
- 子項:作爲子項顯示項目傳遞給列表的功能
- filterList:傳遞給過濾器公司的字段列表mponent
渲染ListAndFilterContainer的:
`<div>
<FilterOnList
filterList={this.props.filterList}
filterState={this.state.filter}
onChange={this.handleFilterChange} />
<ListComponent
list={this.props.list}
title={this.props.title}
>
{this.props.children}
</ListComponent>
</div>`
我們使它通用我希望能夠修改如何列表中會呈現的標記,以及如何輸入字段Filter組件將被渲染。
我想能夠使用過濾列表的邏輯,但我仍然想在演示文稿中免費。
我怎麼能構造它?我猜最簡單的方法是繼承List組件並更改渲染?例如創建一個CarList擴展List? 相同的過濾器組件? 感謝
使用'props.className'聽起來不錯。然而,我想知道如果我不會有太多支持我的組件樹的道具?至於使用構圖來改變組件的渲染,唯一的方法就是通過傳遞更多的道具 – fonky4
爲什麼不願意傳遞道具?它很乾淨,可見,是使用React的關鍵約定。重新組合功能:不,你不需要爲這個道具傳遞功能。假設你有一個CarListComponent,它可以完成一些特定於汽車的事情,但也包含一些適用於所有類型列表的一般東西。對於一般的東西,從您創建並使用CarListComponent中的這些函數的單獨列表實用程序模塊導入函數。 –
對於組合解決方案,如果我使用List實用程序(沒有實際的List組件),那麼我將失去通用List-Filter關係,我想通過組件「ListAndFilterContainer」繼續使用它。 – fonky4