我正在构建一个 React.js 应用程序,我希望允许用户在文本区域中输入样式,这将影响另一个元素的样式。
首先,我有一个如下所示的行组件:
function Row(props) {
return (
<tr>
<td width="50%">
<textarea
style={{}}
value={props.style}
onChange={props.onStyleChange}>
</textarea>
</td>
<td><div className="">Row {props.id+1}</div></td>
</tr>
)
};
我正在遍历 rowData 列表以填充我的行,可以在此处找到:
{this.state.rowData.map(function(row, index) {
return (
<Row
id={row.id}
style={row.style}
onStyleChange={function(e) {this.onStyleChange(e, row.id)}.bind(this)}/>
);
}.bind(this))}
然后在我的 onStyleChange 函数中,我有:
onStyleChange: function(e, id) {
this.state.rowData[id].style = e.target.value;
this.setState(this.state);
}
因此,当用户在 textarea 中输入数据时,它会添加到我的 rowData 数组中的第 i 个元素。假设它是第 0 行并且用户在文本区域中输入“Hello”,则 rowData[0].style =“Hello”。
但是,我希望能够执行以下操作:style={{props.style}}
在我的 Row 组件中。但是因为它目前是一个字符串,所以它不起作用。我也试过style={JSON.parse(props.style)}
每次添加新行时都会抛出错误,因为 props.style='{}'。错误读取Uncaught SyntaxError: Unexpected token f in JSON at position 1
永远感谢任何帮助。必须有一种更简单的方法来做到这一点。谢谢你。