Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在usestates中使用if语句?_Javascript_Reactjs - Fatal编程技术网

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
,然后效果中的代码会抛出…同意,我在答案中的复选框中添加了“?”。关于第二点:是的,这可能会发生,我们需要检查完整的示例,看看这是否是一个问题