reactjs - 将状态传递给下拉选项?
问题描述
我正在尝试从状态填充 Dropdown 组件的选项参数,但 Dropdown 中没有显示任何内容,因为在渲染 Dropdown 时状态为空。
这就是我创建状态的方式:
export interface IListState {
views: IView[];
}
这就是我在构造函数中初始化它的方式:
this.state = {
views: []
};
然后在componentDidMount中:
public componentDidMount(): void {
this.props.provider.getViews().then((views: IView[]) => {
this.setState({
views: views
})
});
}
最后在渲染中我使用的是这样的下拉菜单:
<Dropdown
label="Disabled example with defaultSelectedKey"
defaultSelectedKey=""
options={this.state.views}
disabled={false}
/>
问题是当 Web 部件在控制台中呈现时,我可以看到状态为空,然后它被数据填充,但下拉菜单已经呈现,因此它没有获取数据。
如何使下拉列表读取状态以获取选项属性的数据?
更新代码:
我更新了代码并在一个方法中设置了下拉列表,这就是我从 render() 调用它的方式:
<div>
{ this._renderDropdown() }
</div>
这是锄头的方法看起来像:
private _renderDropdown(): any {
const {views} = this.state;
console.log(views);
if(views.length > 0) {
return(
<Dropdown
label="Disabled example with defaultSelectedKey"
defaultSelectedKey=""
options={views}
disabled={false}
/>
)
}
}
但结果完全一样:-(
最好的问候美国
解决方案
您需要等待数据,然后才能使用填充的数据渲染 Dropdown 组件,并且可能在 API 仍在获取时显示加载指示器。
render () {
const { views } = this.state;
if(views.length > 0) {
return <Dropdown
label="Disabled example with defaultSelectedKey"
defaultSelectedKey=""
options={views}
disabled={false}
/>
}
return <Loading/> // your loading component if any
}
推荐阅读
- laravel - 有没有办法在没有数据的情况下返回 0 几个月?
- mongodb - Mongo Spring JPA 在 findAll() 调用中给出 IndexOutOfBoundsException
- python - Python 库安装但无法导入
- javascript - 鼠标悬停时如何获取DOM列表?
- php - 在 Powershell 中运行 PHP 脚本会一直打开 NotePad++ 而不是执行 PHP 脚本
- python - NameError:未定义名称“驱动程序”
- docker - Docker - 数据库容器的最佳实践?
- postgresql - Hibernate:如何自动生成 36 个基本字符串的 id
- c++ - 为什么Mat类的两个对象可以在不重载运算符+的情况下相加?
- javascript - 在 webpack 中使用模板字符串 [Javascript]