簡體   English   中英

同一依賴項的多個 React 效果掛鈎

[英]Multiple React effect hooks for the same dependency

假設我有一個帶有Person依賴項的效果掛鈎,它遵循架構Person: {name: string, age: number} 我對這個Person依賴項的效果鈎子目前看起來像這樣:

useEffect(() => {
  if (person.name === 'Mike') {
    doSomething()
  }

  if (person.age > 21) {
    somethingElse()
  }
}, [person])

將此邏輯分成具有相同依賴項的自己的效果掛鈎是否是有效的代碼:

// effect that handles any logic for a person's name
useEffect(() => {
  if (person.name === 'Mike') {
    doSomething()
  }
}, [person])

// effect that handles any logic for a person's age
useEffect(() => {
  if (person.age > 21) {
    somethingElse()
  }
}, [person])

我試圖在我的某些組件中將不相關的代碼彼此分開,我想知道這是否會被視為反模式,或者是否會導致不必要的問題?

你是對的。 雖然,我會分別檢查每個單獨效果調用的人員屬性。 檢查這里的反應文檔以獲得一個很好的例子。 (我真的不喜歡別人在回答而我還在打字......)

 // effect that handles any logic for a person's name
useEffect(() => {
  if (person.name === 'Mike') {
    doSomething()
  }
}, [person.name])

// effect that handles any logic for a person's age
useEffect(() => {
  if (person.age > 21) {
    somethingElse()
  }
}, [person.age])

雖然以這種方式編寫代碼是可以接受的,但您可能希望對它們實際關心的內容運行效果。 IE

// effect that handles any logic for a person's name
useEffect(() => {
  if (person.name === 'Mike') {
    doSomething()
  }
}, [person.name])

// effect that handles any logic for a person's age
useEffect(() => {
  if (person.age > 21) {
    somethingElse()
  }
}, [person.age])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM