- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我正在处理的代码和 click here获取codesandbox链接。
import React from "react";
import ReactDOM from "react-dom";
class PhoneBookForm extends React.Component {
constructor(props) {
super(props);
this.state = {
firstName: "",
lastName: "",
phoneNo: ""
};
}
onChange = event => {
this.setState({ [event.target.name]: event.target.value }, () => {
console.log(this.state);
});
};
onSubmit = () => {
console.log("called");
this.props.appendToList({
firstName: this.state.firstName,
lastName: this.state.lastName,
phoneNO: this.state.phoneNo
});
};
render() {
return (
<div>
<label>First Name:</label>
<input type="text" name="firstName" onChange={this.onChange} />
<br />
<label>Last Name:</label>
<input type="text" name="lastName" onChange={this.onChange} />
<br />
<label>Phone Number:</label>
<input type="text" name="phoneNo" onChange={this.onChange} />
<br />
<button onClick={this.onSubmit}>Submit</button> <br />
<br />
</div>
);
}
}
function InformationTable(props) {
console.log("props info", props.peoples);
return (
<table>
<thead>
<th style={{ border: "solid 1px" }}>First Name</th>
<th style={{ border: "solid 1px" }}>Last Name</th>
<th style={{ border: "solid 1px" }}>Phone No</th>
</thead>
{props.peoples.map(person => {
return (
<tr key={person.phoneNo}>
<td>{person.firstName}</td>
<td>{person.lastName}</td>
<td>{person.phoneNo}</td>
</tr>
);
})}
</table>
);
}
class Application extends React.Component {
constructor(props) {
super(props);
this.state = {
listOfPeople: [{}]
};
}
appendToList(people) {
console.log("called2");
// let peoples = this.state.listOfPeople.push(people);
console.log("people", people);
this.setState({ listOfPeople: people }, () => {
console.log(this.state.listOfPeople);
});
}
render = () => {
return (
<section>
<PhoneBookForm appendToList={this.appendToList.bind(this)} />
<InformationTable peoples={this.state.listOfPeople} />
</section>
);
};
}
ReactDOM.render(<Application />, document.getElementById("root"));
正如您在上面看到的,每当我尝试点击提交按钮时,InformationTable 组件都不会呈现。您也可以在codesandbox 上尝试一下。一旦您单击该提交按钮,控制台中就会提示您一条错误消息,内容为信息表组件中发生上述错误,并且显示的是空白页面,而不是我正在显示的结果寻找。
但是,如果我从组件中删除下面的整行,那么它的行为就会正常
{props.peoples.map(person => {
return (
<tr key={person.phoneNo}>
<td>{person.firstName}</td>
<td>{person.lastName}</td>
<td>{person.phoneNo}</td>
</tr>
);
})}
我还像这样 console.log("props info", props.peoples); 控制台记录了上面的内容,以验证对象是否有数据。我想我错过了一个非常微小的细节,我现在无法弄清楚。
最佳答案
这是代码修复
appendToList(people) {
console.log("called2");
// let peoples = this.state.listOfPeople.push(people);
console.log("people", people);
// this.setState(prevState => {
// listOfPeople: prevState.listOfPeople.concat(people);
// });
this.setState({ listOfPeople: this.state.listOfPeople.concat(people) }, () => {
console.log(this.state.listOfPeople);
});
}
关于javascript - 为什么对象数组的映射在我的 react 表组件中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59310179/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!