问题描述
我需要一些帮助。我有一个应用程序,它通过输入类型文件来获取* .xml文件,并将其转换为js对象。 为此,我从这里https://www.npmjs.com/package/xml-js
使用FileReader和xml-js库- 第二个问题是,由于某些原因,我无法将转换后的对象设置为状态。
handleFile = (event) => {
let file = event.target.files[0];
let reader = new FileReader();
reader.readAsText(file);
reader.onloadend = () => {
let json = xmljs.xml2js(reader.result,{compact: true,spaces: 4});
this.setState({
file: json
},console.log ('file',json))
}
};
render() {
return (
<div>
<input type="file" onChange={this.handleFile}/>
</div>
)
}
那我该怎么显示西里尔符号以及如何将对象设置为状态?
解决方法
我修复了它。 现在我的代码看起来像这样:
handleFile = (event) => {
let file = event.target.files[0];
let reader = new FileReader();
reader.readAsText(file,'windows-1251');
reader.onloadend = () => {
let json = xmljs.xml2js(reader.result,{compact: true,spaces: 4});
this.setState({
file: json
},() => {console.log('state',this.state)})
}
};
render() {
return (
<div>
<input type="file" onChange={this.handleFile}/>
</div>
)
}
我添加了“ windows-1251”来定义编码类型,它有助于西里尔符号。 同样,我将setState之后的回调函数更改为()=> {console.log('state',this.state)},之后我可以看到当前状态,并带有竞争性的fron xml文件。