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>`.
Advertisement
Answer
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);