reactjs - 在 React 中,如何获取状态到 UI 中,然后通过数组对象进行映射
问题描述
我正在为网站上的产品展示构建一个网格订购工具。它接收一个 CSV,将其解析为 JSON,允许用户对其重新排序,然后保存新的 CSV。因为我将数组对象保存在状态中,所以我有两个问题。上传文件后,我设法使数组对象进入状态。这个问题有两个部分。
1)如何将状态输入用户界面?2)然后我将不得不映射一个对象数组
import React, { Component } from 'react'
import Papa from 'papaparse'
class Product extends Component {
constructor(props) {
super(props);
this.state = {data: [] };
this.handleChange = this.handleChange.bind(this);
this.updateData = this.updateData.bind(this)
}
handleChange(event) {
event.preventDefault()
const inventory = event.target.files[0]
Papa.parse(inventory, {
header: true,
complete: this.updateData
})
} // END
updateData(results) {
const data = results.data
console.log(data)
this.setState({data}) // I have it in state. How to get it in UI?
}
render() {
return (
<div>
<form >
<label>
Upload file:
<input type="file" onChange={this.handleChange} />
</label>
</form>
<div> Map through state here </div>
</div>
);
}
} // END
export default Product
解决方案
您可以创建一个映射集合并返回 UI 组件数组的方法。然后在组件的 return 语句中呈现它们。
import React, { Component } from 'react'
import Papa from 'papaparse'
class Product extends Component {
constructor(props) {
super(props);
this.state = {data: [] };
this.handleChange = this.handleChange.bind(this);
this.updateData = this.updateData.bind(this);
this.renderData = this.renderData.bind(this);
}
handleChange(event) {
event.preventDefault()
const inventory = event.target.files[0]
Papa.parse(inventory, {
header: true,
complete: this.updateData
})
} // END
updateData(results) {
const data = results.data
console.log(data)
this.setState({data}) // I have it in state. How to get it in UI?
}
// method that check data prop in state for items in array,
// returning a collection of UI components if there is,
// otherwise returns null
renderData() {
return this.state.data.length > 1
? this.state.data.map((item) => (
<div>{item.title}</div> // assuming your data item has a title prop
))
: null;
}
render() {
return (
<div>
<form >
<label>
Upload file:
<input type="file" onChange={this.handleChange} />
</label>
</form>
<div>
{/* execute method here */}
{this.renderData()}
</div>
</div>
);
}
} // END
export default Product
推荐阅读
- c# - 自定义排序数组 - 较大值之间的较小值
- json - 如何使用也包含无效 NULL 字符串的嵌套 JSON?
- html - 如何在 chrome 中不显示翻译请求
- php - 带有 PHP 的 nginx-unit 在找不到任何 PHP 文件时生成 Server 500 错误
- ios - UIPanGestureRecognizer - 仅在连接 2 个点的线路径内拖动 UIView
- swift - Mapbox Swift 指南针可见性属性
- python - CVXPY 中表达式的二次型 (quad_form)
- typescript - 如何正确键入作为打字稿中的类的变量
- c# - C#如何在实体框架中的SaveChanges之前删除新添加的记录
- reactjs - React Native Gifted Chat 懒加载器