Javascript 加载部件时,检查支柱是否未定义
为了呈现一个或另一个屏幕,我有一个关于检查功能组件中是否未定义道具的问题 我的功能组件:Javascript 加载部件时,检查支柱是否未定义,javascript,reactjs,conditional-operator,conditional-rendering,Javascript,Reactjs,Conditional Operator,Conditional Rendering,为了呈现一个或另一个屏幕,我有一个关于检查功能组件中是否未定义道具的问题 我的功能组件: const InfoHeader = ({population, infected, recovered, deaths, active}) => { console.log(population) return( <div className="infoHeader-wrapper"> ///code to render
const InfoHeader = ({population, infected, recovered, deaths, active}) => {
console.log(population)
return(
<div className="infoHeader-wrapper">
///code to render the information passed into the props
</div>
)
}
export default InfoHeader
有没有更好的方法来创建三元运算符,以便有条件地呈现函数组件返回中的一个或另一个元素?比如:
return(
allProps !== undefined ?? renderX : renderY
)
非常感谢切换是一种可能性
switch (expr) {
case "Oranges":
console.log("Oranges are $0.59 a pound.");
break;
case "Apples":
console.log("Apples are $0.32 a pound.");
break;
case "Bananas":
console.log("Bananas are $0.48 a pound.");
break;
case "Cherries":
console.log("Cherries are $3.00 a pound.");
break;
case "Mangoes":
case "Papayas":
console.log("Mangoes and papayas are $2.79 a pound.");
break;
default:
console.log("Sorry, we are out of " + expr + ".");
}
console.log("Is there anything else you'd like?");
在您的情况下,您可以这样使用它:
switch (population !==undefined && infected !== undefined) {
case true:
console.log('All is defined');
break;
case false:
console.log('Not all is defined.');
break;
default:
console.log('Default');
}
转换是一种可能性
switch (expr) {
case "Oranges":
console.log("Oranges are $0.59 a pound.");
break;
case "Apples":
console.log("Apples are $0.32 a pound.");
break;
case "Bananas":
console.log("Bananas are $0.48 a pound.");
break;
case "Cherries":
console.log("Cherries are $3.00 a pound.");
break;
case "Mangoes":
case "Papayas":
console.log("Mangoes and papayas are $2.79 a pound.");
break;
default:
console.log("Sorry, we are out of " + expr + ".");
}
console.log("Is there anything else you'd like?");
在您的情况下,您可以这样使用它:
switch (population !==undefined && infected !== undefined) {
case true:
console.log('All is defined');
break;
case false:
console.log('Not all is defined.');
break;
default:
console.log('Default');
}
你可以这样做:
switch (population !==undefined && infected !== undefined) {
case true:
console.log('All is defined');
break;
case false:
console.log('Not all is defined.');
break;
default:
console.log('Default');
}
const bla={
人口:空,
感染:未定义,
恢复:1,,
死亡:没错,
活动:“是”
}
const areAllTruthy=Object.values(bla).every(v=>v!==null&&v!==undefined)
console.log(areAllTruthy)
您可以执行以下操作:
switch (population !==undefined && infected !== undefined) {
case true:
console.log('All is defined');
break;
case false:
console.log('Not all is defined.');
break;
default:
console.log('Default');
}
const bla={
人口:空,
感染:未定义,
恢复:1,,
死亡:没错,
活动:“是”
}
const areAllTruthy=Object.values(bla).every(v=>v!==null&&v!==undefined)
console.log(areAllTruthy)
您可以创建一个函数,该函数使用道具验证所有未定义的值:
const InfoHeader = (props) => {
const {population, infected, recovered, deaths, active} = props
const propsValid = (props) => Object.values(props).every(prop => prop !== undefined)
console.log(population)
return(
propsValid(props) ? renderX : renderY
)
}
export default InfoHeader
您可以创建一个函数,该函数使用道具验证所有未定义的值:
const InfoHeader = (props) => {
const {population, infected, recovered, deaths, active} = props
const propsValid = (props) => Object.values(props).every(prop => prop !== undefined)
console.log(population)
return(
propsValid(props) ? renderX : renderY
)
}
export default InfoHeader
如果问题是可读性,您也可以这样做:
const scenario = population !==undefined && infected !== undefined && ...
return(
scenario ? renderX : renderY
)
如果问题是可读性,您也可以这样做:
const scenario = population !==undefined && infected !== undefined && ...
return(
scenario ? renderX : renderY
)
因此,将道具传递给一个单独的对象,并检查对象中的所有项目是否都在“那里”?好的,这确实有意义。Thanks@JorgeGuerreiro您不需要单独的对象,
bla
可以是props
。我刚刚发布了一个简单的js代码片段,让它可以运行。因此,将道具传递给一个单独的对象,并检查对象中的所有项目是否都在“那里”?好的,这确实有意义。Thanks@JorgeGuerreiro您不需要单独的对象,bla
可以是props
。我刚刚发布了一个简单的js代码片段,让它可以运行。我不认为这对我有帮助,但谢谢。我不认为这对我有帮助,但谢谢。我认为这是一个更简洁的解决方案。快速提问,我不能简单地使用Object.values(props.every)(element=>element!==undefined)创建三元函数,而不是创建该函数吗?renderX:render Y或者为了可读性,我应该坚持使用这个函数?如果你愿意,你可以使用directat三元运算符。我提取到一个函数只是为了可读性,但是你可以采用你想要的方法。是的,我想在可读性方面,你的答案更有意义。非常感谢:)不客气:)我认为这是更整洁的解决办法。快速提问,我不能简单地使用Object.values(props.every)(element=>element!==undefined)创建三元函数,而不是创建该函数吗?renderX:render Y或者为了可读性,我应该坚持使用这个函数?如果你愿意,你可以使用directat三元运算符。我提取到一个函数只是为了可读性,但是你可以采用你想要的方法。是的,我想在可读性方面,你的答案更有意义。非常感谢:)不客气:)这是一个有效的答案谢谢:)不客气:)这是一个有效的答案谢谢:)不客气:)