Reactjs 在React中动态填充表单
我想为列表中的每个项目生成一行。我目前试图通过以下方式实现这一目标:Reactjs 在React中动态填充表单,reactjs,Reactjs,我想为列表中的每个项目生成一行。我目前试图通过以下方式实现这一目标: <thead> <tr> <th>Title</th> <th>Date</th> <th>People</th> <th>Status</th> </tr> </thead> { this.renderEvents()
<thead>
<tr>
<th>Title</th>
<th>Date</th>
<th>People</th>
<th>Status</th>
</tr>
</thead>
{ this.renderEvents() }
标题
日期
人
地位
{this.renderEvents()}
renderEvents(){
const events=this.state.data;
console.log(事件);
返回(
{events.forEach((event)=>{
返回(
{event.title}
{event.startDate}
{event.userList.length}
来了
);
})}
);
}
我目前面临的问题是,我的console.log(events)行执行了两次,而表保持为空
感谢您的帮助!:) 不返回新数组。试试吧
返回(
{events.map((事件)=>{
返回(
{event.title}
{event.startDate}
{event.userList.length}
来了
);
})}
);
不返回新数组。试试吧
返回(
{events.map((事件)=>{
返回(
{event.title}
{event.startDate}
{event.userList.length}
来了
);
})}
);
另一种方法
render(){
const data = events.map(
event => {
<tbody>
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
</tbody>
})
return (
<div>
{data}
</div>
)
}
render(){
const data=events.map(
事件=>{
{event.title}
{event.startDate}
{event.userList.length}
来了
})
返回(
{data}
)
}
另一种方法
render(){
const data = events.map(
event => {
<tbody>
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
</tbody>
})
return (
<div>
{data}
</div>
)
}
render(){
const data=events.map(
事件=>{
{event.title}
{event.startDate}
{event.userList.length}
来了
})
返回(
{data}
)
}
更多的React惯用解决方案是使用React组件,而不是调用返回jsx的函数。组件创建一次并装入一次,相反,每次函数都会返回一个新组件(意味着内存链接将更改),这将导致在每次装入和卸载组件时对协调机制作出反应。这不利于反应性能
我建议您以下一种方式构建代码:
class EventViewer extends React.Component {
// keep logic of fetching events here and saving them (to state for example)
render() {
return (
<table>
<EventVieverHeader />
<EventVieverBody events={this.state.events}/>
</table>
)
}
}
const EventVieverHeader = () => (
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
);
const EventVieverBody = ({events}) => (
<tbody>
{events.map(
event => {
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
})}
</tbody>
)
类EventViewer扩展了React.Component{
//在此处保留获取事件并保存它们的逻辑(例如,状态)
render(){
返回(
)
}
}
const EventVieverHeader=()=>(
{event.title}
{event.startDate}
{event.userList.length}
来了
);
const EventVieverBody=({events})=>(
{events.map(
事件=>{
{event.title}
{event.startDate}
{event.userList.length}
来了
})}
)
更多的React惯用解决方案是使用React组件,而不是调用返回jsx的函数。组件创建一次并装入一次,相反,每次函数都会返回一个新组件(意味着内存链接将更改),这将导致在每次装入和卸载组件时对协调机制作出反应。这不利于反应性能
我建议您以下一种方式构建代码:
class EventViewer extends React.Component {
// keep logic of fetching events here and saving them (to state for example)
render() {
return (
<table>
<EventVieverHeader />
<EventVieverBody events={this.state.events}/>
</table>
)
}
}
const EventVieverHeader = () => (
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
);
const EventVieverBody = ({events}) => (
<tbody>
{events.map(
event => {
<tr>
<td>{event.title}</td>
<td>{event.startDate}</td>
<td>{event.userList.length}</td>
<td><Badge color="success">Coming</Badge></td>
</tr>
})}
</tbody>
)
类EventViewer扩展了React.Component{
//在此处保留获取事件并保存它们的逻辑(例如,状态)
render(){
返回(
)
}
}
const EventVieverHeader=()=>(
{event.title}
{event.startDate}
{event.userList.length}
来了
);
const EventVieverBody=({events})=>(
{events.map(
事件=>{
{event.title}
{event.startDate}
{event.userList.length}
来了
})}
)
非常感谢,修复了:D非常感谢,修复了:D