[英]React passing state to sibling component
const ChatBox = ({ messages, sendInput }) => {
<Card fluid className={theme} raised style={{ height: '100%' }}>
<ChatLog
messages={messages}
/>
<RecordInput // has internal recording state
sendInput={sendInput}
/>
</Card>
}
我的ChatBox
含有ChatLog
和RecordInput
。
ChatLog
包含要顯示的消息列表。
RecordInput
是要發送到ChatLog
的用戶語音錄制輸入。 此組件的內部recording
狀態可以為true
或false
。
我想將此recording
狀態發送到作為同級組件的ChatLog
。
一種解決方案:我可以使ChatBox
成為具有recording
狀態的類組件,並將其傳遞給ChatLog
和RecordInput
..但是我不希望重構無功能的無狀態組件..
還有另一種方法嗎? 也許是redux或進行某種克隆?
有多種選擇:
RecordInput
類添加onRecordStatusChange
道具,該道具將在每次更改狀態時在該組件中調用,它將通知父組件( Card
)有關記錄的新狀態。 這樣,您可以將記錄的狀態保存在父組件和子組件中,並且父組件可以將此數據傳遞給其他子組件( RecordInput
組件的同級兄弟)。 RecordInput
上使用ref
來檢查該組件內部記錄的狀態(我不認為這是您在特定情況下想要的,但是您可以執行此操作)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.