短路在反应渲染中不起作用 div
Short circuiting not working in react render div
我想在变量为真时启动多个组件,我使用如下:
return (
<div className="report">
{conditionalVariable &&
<ComponentA/> &&
<ComponentB/>
}
</div>
)
但是,当变量为真时,只有组件A起床而组件B.What没有起床,这是错误的吗?
你的花括号设置的有点奇怪。像这样尝试:
return (
<div className="report">
{conditionalVariable &&
<>
<ComponentA />
<ComponentB />
</>
}
</div>
)
此解决方案使用 React.Fragment
的简短语法将要在相同条件下显示的两个组件分组。
我很惊讶你能得到任何输出。那些条件组件一旦你弄清楚了逻辑,就需要有一个父级——要么有一个片段,要么有一个 div,或者什么的。
您会看到类似此错误的内容:
SyntaxError: Inline Babel script: Adjacent JSX elements must be wrapped in an enclosing tag
const { Fragment, useState } = React;
function Example() {
const [ conditional, setConditional ] = useState(false);
function handleClick() {
setConditional(!conditional);
}
return (
<div>
{conditional && (
<Fragment>
<Test text="Bob" />
<Test text="Sue" />
</Fragment>
)}
<button onClick={handleClick}>
Click me
</button>
</div>
);
}
function Test({ text }) {
return <p>{text}</p>;
}
ReactDOM.render(
<Example />,
document.getElementById('react')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="react"></div>
我想在变量为真时启动多个组件,我使用如下:
return (
<div className="report">
{conditionalVariable &&
<ComponentA/> &&
<ComponentB/>
}
</div>
)
但是,当变量为真时,只有组件A起床而组件B.What没有起床,这是错误的吗?
你的花括号设置的有点奇怪。像这样尝试:
return (
<div className="report">
{conditionalVariable &&
<>
<ComponentA />
<ComponentB />
</>
}
</div>
)
此解决方案使用 React.Fragment
的简短语法将要在相同条件下显示的两个组件分组。
我很惊讶你能得到任何输出。那些条件组件一旦你弄清楚了逻辑,就需要有一个父级——要么有一个片段,要么有一个 div,或者什么的。
您会看到类似此错误的内容:
SyntaxError: Inline Babel script: Adjacent JSX elements must be wrapped in an enclosing tag
const { Fragment, useState } = React;
function Example() {
const [ conditional, setConditional ] = useState(false);
function handleClick() {
setConditional(!conditional);
}
return (
<div>
{conditional && (
<Fragment>
<Test text="Bob" />
<Test text="Sue" />
</Fragment>
)}
<button onClick={handleClick}>
Click me
</button>
</div>
);
}
function Test({ text }) {
return <p>{text}</p>;
}
ReactDOM.render(
<Example />,
document.getElementById('react')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="react"></div>