简体   繁体   中英

react JavaScript ternary conditional operation

After I import the data as json from the detail page, in ProductDetail > brand > shoes > size.length get the length length is outputting in JSX.

But there is a problem. There are also products without shoes data for each detailed product on the detail page. I want to treat products without data as 0 instead of length as a ternary operator, but I don't know how to handle it.

<p>{ProductDetail && ProductDetail.brand.shoes.size.length}</p>

But here, data without brand is used using the ternary operator. <p>0</p> : I want to display it like this.

Nike Air Force ProductDetail > brand > shoes > size > length(0,1,2,3,4,5,6) <p>{length}</p>
jordan shoes ProductDetail > brand > shoes > size > length(0,1,2,3,4,5) <p>{length}</p>
adidas shoes ProductDetail > brand > x   -> Handles `<p>0</p>`.

您可以像这样使用三元运算符和可选链接

<p>{ProductDetail?.brand?.shoes?.size?.length ? ProductDetail.brand.shoes.size.length : null}</p>

If you need to show 0 when an object is null or parent object is null, Try some like below

<p>{ProductDetail?.brand?.shoes?.size?.length || 0}</p>

Basically with using optional chaining and || operator, The output will be

ProductDetail is null/undefined ==> 0
ProductDetail.brand null/undefined ==> 0
....
ProductDetail.brand.shoes.size has valid array ==> length

 let ProductDetail = { brand: { shoes: { size: [2, 3] } } }; console.log(ProductDetail?.brand?.shoes?.size.length || 0); ProductDetail = null; console.log(ProductDetail?.brand?.shoes?.size.length || 0); ProductDetail = { brand: { shoes: null } } console.log(ProductDetail?.brand?.shoes?.size.length || 0);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM