3 回答
TA贡献1856条经验 获得超11个赞
它只是用作声明后备的简洁语法。如果第一个变量是假的,它将回退到第二个。
null第一个值的示例:
const {useState} = React;
const test = null;
const fallback = 'fallback';
const Example = () => {
const [state, setState] = useState(test || fallback);
console.log("state: ", state); // Logs the value of fallback
return <span />
}
ReactDOM.render(<Example />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="root"></div>
但是如果第一个变量是真的,它就会被使用:
const {useState} = React;
const test = 'first priority';
const fallback = true;
const Example = () => {
const [state, setState] = useState(test || fallback);
console.log("state: ", state); // Logs the value of test
return <span />
}
ReactDOM.render(<Example />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="root"></div>
TA贡献1871条经验 获得超8个赞
Javascript 中的双管道运算符(逻辑或)将返回第一个可以转换为true.
这不是 React 独有的,它是一个烘焙的 vanilla-JS 运算符,你可以在任何地方使用。
以下是一些示例(取自 MDN):
o1 = true || true // t || t returns true
o2 = false || true // f || t returns true
o3 = true || false // t || f returns true
o4 = false || (3 == 4) // f || f returns false
o5 = 'Cat' || 'Dog' // t || t returns "Cat"
o6 = false || 'Cat' // f || t returns "Cat"
o7 = 'Cat' || false // t || f returns "Cat"
o8 = '' || false // f || f returns false
o9 = false || '' // f || f returns ""
o10 = false || varObject // f || object returns varObject
注意:如果您使用此运算符为某个变量提供默认值,请注意不会使用任何虚假值。如果您只需要过滤掉 null 或 undefined,请考虑使用nullish coalescing 运算符
TA贡献1853条经验 获得超6个赞
const [thing, setThing] = useState(thing || otherThing);
如果其中一个thing
或otherThing
计算结果为真实表达式,则useState(true)
调用 then 并返回 2 个项目的元组。
如果两者thing
都不otherThing
计算为真实表达式,则useState(false)
调用 then 并返回 2 个项目的元组。
一些不真实的表达的例子:
false
null
undefined
""
[]
{}
1+1==3
添加回答
举报