reactjs - syncfusion 输入字段未连接到状态
问题描述
我已经尝试了很多方法来找到我的问题的解决方案,也搜索了很多但找不到我的解决方案。
我在 TabComponent 中使用 syncfusion TextBoxComponent 作为 tabContent ,并且我有一个 syncfusion Grid 。我希望在单击其中一行时显示 TextBoxComponent 中的当前行值,例如 Name 列,但它不起作用。当我将 textBoxComponent 移出 TabComponent 时,它在这种情况下运行良好并显示数据。
constructor(props) {
super(props)
this.state = {
name: "",
tabConfig: {
headerText: [
{
text: "Header_1",
iconCss: "fa fa-home"
}
],
tabContent: [
this.createTabPanel1,
]
}
}
}
//handle Grid rowSelecting
this.businessTableRowSelected = target => {
const newName = target.data.name;
this.setState({name:newName})
}
//Call when TextBoxComponent value Change
businessFormInputHandleChange = e => {
//e.preventDefault nont work when TextComponent inside of TabComponent
//but when move TextComponent out of TabComponent it works well
//e.preventDefault();
const name = e.currentTarget.value;
this.setState({ name: name });
}
//Tab Content
createTabPanel1 = () => {
return (
<React.Fragment>
<TextBoxComponent
key={"name"}
id="name"
value={this.state.name}
onChange={this.businessFormInputHandleChange.bind(this)}
placeholder={"name"}
floatLabelType="Auto"
/>
</React.Fragment>
);
}
Render() {
return(
<TabComponent heightAdjustMode="Auto" id="businessTabContent">
<TabItemsDirective>
{
tabListNumber.map(item => {
return (
<TabItemDirective
key={item}
header={this.state.tabConfig.headerText[item]}
content={this.state.tabConfig.tabContent[item]}
/>
);
})}
</TabItemsDirective>
</TabComponent>
)
}
解决方案
来自 Syncfusion 的问候。
我们已经使用 content 属性中的自定义数据模板实现了您的要求。我们已将模板和数据传递给 Tab 内容以检索 setState 更改。这个问题的原因是 setstate 在 Tab 内容模板中没有立即发生变化。请参考以下代码。
模板1(数据){返回();}
<TabComponent ref={(tab) => { this.tabObj = tab }} showCloseButton={true} heightAdjustMode='None' height={320}>
<TabItemsDirective>
<TabItemDirective header={this.headertext[0]}
content={{
template: this.template1,
data: { text: this.state.count }
}} />
</TabItemsDirective>
</TabComponent>
<div className="col-xs-6 col-sm-6 col-lg-6 col-md-6">
<input type="text" id="text1" value={this.state.count} />
</div>
<button onClick={this.handleIncrement}>Increment by 1</button>
<button onClick={this.handleDecrement}>Decrement by 1</button>
我们附上了以下示例供您参考。
示例:https ://stackblitz.com/edit/react-3ngtcw-uwwh27?file=index.js
如果您需要进一步的帮助,请告诉我们。
问候,阿伦 P。
推荐阅读
- apache-flink - 如何在 AWS EMR (ElasticMapReduce) 中监控 Apache Flink?
- javascript - 谷歌可视化双 Y 轴图表将线与特定条对齐
- asp.net-mvc - 剑道日期选择器在发布后不显示
- java - 如何在 poi apache java 中同时设置单元格 fontHeight 9 和 Bold
- java - Spark 2.4.0 Avro Java - 无法解析方法 from_avro
- json - 基于匹配条件的 JOLT 变换
- css - 不要应用 :before,如果某个类被设置为标签(结合 :before 和 :not)
- reactjs - 部署officejs结构反应词添加
- html - 垂直调整大小时 Div 重叠
- go - 引用未定义的标识符 bytes.ReplaceAll