Javascript 是否可以在usestates中使用if语句?
我的使用状态如下:Javascript 是否可以在usestates中使用if语句?,javascript,reactjs,Javascript,Reactjs,我的使用状态如下: const [Total, setTotal] = useState(props.location.state.data.price) 我希望这样,如果定义了props.location.state.data.price,它将呈现,但如果未定义,它将返回0 我尝试过空合并操作符,但它不起作用。感谢您的帮助。谢谢或者像这样: const[Total,setTotal]=useState(props.location?state?data?price?0) 或者像这样:
const [Total, setTotal] = useState(props.location.state.data.price)
我希望这样,如果定义了props.location.state.data.price,它将呈现,但如果未定义,它将返回0
我尝试过空合并操作符,但它不起作用。感谢您的帮助。谢谢或者像这样:
const[Total,setTotal]=useState(props.location?state?data?price?0)
或者像这样:
const[Total,setTotal]=useState(
道具位置&&
props.location.state&&
props.location.state.data&&
props.location.state.data.price | 0
)
如果props.location.state.data.price
在某个时候应该发生变化,那么您可能还需要更新total
,对吗?因此,我这样做的效果是:
const [total, setTotal] = useState(0)
useEffect(() => {
if (!props.location?.state?.data?.price) {
setTotal(0);
return;
}
setTotal(props.location.state.data.price);
}, [props.location.state.data.price])
当您使用nullish合并时,它会给您带来什么错误?如果它是未定义的,道具会是什么样子?除非
数据,否则将道具传递到state是不寻常的。price
是某种默认值。问题是,它始终会执行对DOM(或主机树)的初始提交使用0
,然后它将使用正确的值安排更新。因此,当存在实际价格时,用户可能会看到零。更不用说位置可能是null
,然后效果中的代码会抛出…同意,我在答案中的复选框中添加了“?”。关于第二点:是的,这可能会发生,我们需要检查完整的示例,看看这是否是一个问题