问题描述
目前使用的taro版本是 1.2.26,以下是代码清单。
复现步骤
[复现问题的步骤]
// 这里可以贴代码
import Taro, { Component } from '@tarojs/taro';
import { View, Text, Picker } from '@tarojs/components'
import './test.scss';
class Test extends Component {
constructor(props) {
super(props);
this.validType = '';
let SID = 2;
let selector = [
{value:'a', key:1},
{value:'b', key:2},
{value:'c', key:3},
{value:'d', key:4},
];
this.state = {
selector:selector,
sid: SID,
selectorChecked:selector[SID].value
};
}
onChange(e){
console.log(e.detail.value);
this.setState({
selectorChecked: this.state.selector[e.detail.value].value
});
}
handleClick(){
let selector = [
{value:'aa', key:5},
{value:'bb', key:6},
{value:'cc', key:7},
{value:'dd', key:8},
];
let SID = 1;
this.setState({
selector:selector,
sid: SID,
selectorChecked:selector[SID].value
});
}
render() {
return (
<View className='test'>
<View className='page-section'>
<Text onClick={this.handleClick.bind(this)}>点击更新Picker(a->aa)</Text>
<View>
<Picker mode='selector' range={this.state.selector} value={this.state.sid} rangeKey='value' onChange={this.onChange.bind(this)}>
<View className='picker'>
当前选择:{this.state.selectorChecked}
</View>
</Picker>
</View>
</View>
</View>
);
}
}
export default Test;
期望行为
像这种情况如何处理?能不能直接把Picker销毁,再重新重新实例化,变成新值range与value.
系统信息
Taro v1.2 及以上版本已添加
taro info命令,方便大家查看系统及依赖信息,运行该命令后将结果贴下面即可。
补充信息
主要是原因是更新range 与 value的时候,并不触发Picker的 updateHeight()
欢迎提交 Issue~
如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏
如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。
Good luck and happy coding~
CC @jinjinjin0731
已修复,待下个版本。 如果紧急需要, 你可以在 node_modules 的 @tarojs / components 中找到该组件,按照提交修改一下即可
感谢感谢
Most helpful comment
CC @jinjinjin0731