我目前將我的active狀態設定為 0:
const [active, setActive] = useState(0);
但我想知道如何將初始值設定null為我的組件道具之一:isFilterMode是否為真?那么初始狀態是基于道具的“動態”嗎?
uj5u.com熱心網友回復:
嘗試如下
const [active, setActive] = useState(props.isFilterMode ? null : 0);
或者
使用回呼函式 ( lazy initialisation)
const [active, setActive] = useState(() => props.isFilterMode ? null : 0);
uj5u.com熱心網友回復:
您可以定義一個帶有回傳值的運算式作為 useState 的引數。使用三元運算子,如果 的值為真,則props.isFilterMode ? null : 0回傳,否則為 0。所以在你會有:nullprops.isFilterModeuseState
const [active, setActive] = useState(props.isFilterMode ? null : 0);
就像 Amila 在另一個答案中建議的那樣,您可以使用回呼作為 useState 的引數,并且從該回呼評估和回傳的任何內容都將是您使用箭頭函式的初始狀態,您可以執行以下操作:
const [active, setActive] = useState(() => props.isFilterMode ? null : 0);
或更明確但代碼更長:
const [active, setActive] = useState(() => { if(props.isFilterMode){ return null;} else { return 0;} } );
uj5u.com熱心網友回復:
const Component = ({ isFilterMode }) => {
const [active, setActive] = useState(() => isFilterMode ? null : 0);
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/359753.html
標籤:javascript 反应 使用状态
