React Native使用Ui Kitten的Input组件绑定state值不显示问题
可能的错误原因及解决方案
- 类型不匹配(最高概率)
Ui Kitten的Input组件value属性仅支持字符串类型传入,你代码中打印的this.state.total是数字类型的1,和写死的字符串"1"类型不同,因此无法识别。修复方法是转成字符串后传入:
<Input value={String(this.state.total)} />
- state初始化异常
如果组件首次渲染时this.state.total为undefined或null,Ui Kitten的Input不会自动将其转为空字符串渲染,后续更新时可能出现状态不同步的问题。建议初始化state时就给对应字段赋值空字符串:
state = { total: '' // 不要赋值为undefined、null或者数字类型的初始值 }
- 受控组件配套属性缺失
Ui Kitten的Input作为受控组件使用时,必须配套传递onChangeText属性来处理值变更,仅传value属性会导致组件状态被锁死,无法正常响应state更新。示例写法:
<Input value={String(this.state.total)} onChangeText={text => this.setState({ total: text })} />
- state更新方式错误
如果是直接修改this.state.total而非调用this.setState()方法更新状态,React不会触发组件重渲染,Input自然无法拿到最新的state值。必须严格通过setState方法更新state。 - 组件版本bug
部分旧版本的Ui Kitten对Input的value属性校验逻辑存在缺陷,可尝试升级到Ui Kitten的最新稳定版本后再测试。
内容的提问来源于stack exchange,提问作者Haren Sarma
相关产品推荐
相关产品推荐

