javascript - 切换按钮工作但不在 React 中显示列表内容
问题描述
我编写了一个切换功能来在我按下按钮时显示一个列表。虽然我已经通过 console.log 进行了测试,但它返回了 a 但 div 里面没有任何内容,而且列表也没有按应有的方式在按钮下方创建,我看不出我做错了什么这里。
class App extends Component {
state = {
persons: [
{ name: "Leonardo", age: "26" },
{ name: "Margarete", age: "50" },
{ name: "Marcelo", age: "50" }
],
otherState: "some other value",
showPersons: false
};
togglePersonsHandler = () => {
const doesShow = this.state.showPersons;
this.setState({ showPersons: !doesShow });
};
render() {
const style = {
backgroundColor: "white",
font: "inherit",
border: "1x solid blue",
padding: "8px",
cursor: "pointer"
};
let persons = null;
if (this.state.showPersons) {
persons = (
<div>
{this.state.persons.map(person => {
return
<Person name={person.name} age={person.age} />;
})}
</div>
);
}
return (
<div className="App">
<h1>MY APP</h1>
<button style={style} onClick={this.togglePersonsHandler}>
Toggle Persons
</button>
{persons}
</div>
);
}
}
export default App;
根据要求 Person 组件
import React from 'react';
import './Person.css';
const person = ( props ) => {
return (
<div className="Person">
<p onClick={props.click}>I'm {props.name} and I am {props.age} years old!</p>
<p>{props.children}</p>
<input type="text" onChange={props.changed} value={props.name} />
</div>
)
};
export default person;
解决方案
使用条件直接在 JSX 中呈现 div。你可以这样做:
<div className="App">
<h1>MY APP</h1>
<button style={style} onClick={this.togglePersonsHandler}>
Toggle Persons
</button>
{ this.state.showPersons ?
<div>
{this.state.persons.map(person => {
<Person name={person.name} age={person.age} />;
})}
</div>
: null
}
</div>
showPersons
当且仅当解析为 thruthy 值时,这只会将 div 添加到 DOM 。
推荐阅读
- python - Selenium 等到用户单击按钮
- c# - 根据c#中的给定字符串确定日期逻辑
- reactjs - UTF8 使用 AWS S3 和 Nextjs getStaticProps
- javascript - 如何在 Modal 上显示选中的单选按钮?
- c# - ASP.NET MVC 应用程序无法验证从 Azure AD 收到的令牌
- php - laravel 嵌套的急切加载和第一个函数
- python - 将标签悬停在图表上时显示标签*具有高 y 轴值*、多条线和多轴
- git - 当前分支没有跟踪信息。请指定您要合并的分支
- javascript - 如何将日期时间字符串分成两部分
- telegram-bot - 隐私设置为禁用的电报机器人应该能够读取组中的最后 100 条消息 - 如何在我的机器人中实现这一点?