从状态更新多个 select 选项不会触发 material_select,因此选项不会出现
Updating multi-select options from state doesn't trigger material_select so options don't appear
我正在根据组件的状态更新 select 的选项。
状态最初设置为一个空数组,但一旦从 API 加载,状态就会更新,因此选项应该更新。
虽然确实会发生这种情况(并且可以在开发工具中看到),但看起来需要调用 material_select 来更新它的外观。
我可以通过从控制台调用 $("select").material_select() 使其正确显示。
我认为导致问题的行在这里:https://github.com/react-materialize/react-materialize/blob/master/src/Input.js#L38
有没有一种方法可以在我的组件中手动调用它?
请注意,我正在使用 create-react-app。
<Row>
<Input
id="categories"
type="select"
label="Categories"
multiple={true}
onChange={this.handleChange}
s={12}
>
{this.state.categories.map(category => {
return (
<option key={category._id} value={category._id}>
{category.name}
</option>
);
})}
</Input>
</Row>
一旦您的选项从 API 到达,您可以通过呈现输入组件来解决问题。
您可以将状态初始化为空而不是空数组:
state = {
categories: null;
}
So in your render method, render the component conditionally (only if options are available):
render() {
return (
<Row>
{this.state.categories ? (
<Input
id="categories"
type="select"
label="Categories"
multiple={true}
onChange={this.handleChange}
s={12}
>
{this.state.categories.map(category => {
return (
<option key={category._id} value={category._id}>
{category.name}
</option>
)
})}
</Input>
) : null}
</Row>
)
}
我正在根据组件的状态更新 select 的选项。
状态最初设置为一个空数组,但一旦从 API 加载,状态就会更新,因此选项应该更新。
虽然确实会发生这种情况(并且可以在开发工具中看到),但看起来需要调用 material_select 来更新它的外观。
我可以通过从控制台调用 $("select").material_select() 使其正确显示。
我认为导致问题的行在这里:https://github.com/react-materialize/react-materialize/blob/master/src/Input.js#L38
有没有一种方法可以在我的组件中手动调用它?
请注意,我正在使用 create-react-app。
<Row>
<Input
id="categories"
type="select"
label="Categories"
multiple={true}
onChange={this.handleChange}
s={12}
>
{this.state.categories.map(category => {
return (
<option key={category._id} value={category._id}>
{category.name}
</option>
);
})}
</Input>
</Row>
一旦您的选项从 API 到达,您可以通过呈现输入组件来解决问题。
您可以将状态初始化为空而不是空数组:
state = {
categories: null;
}
So in your render method, render the component conditionally (only if options are available):
render() {
return (
<Row>
{this.state.categories ? (
<Input
id="categories"
type="select"
label="Categories"
multiple={true}
onChange={this.handleChange}
s={12}
>
{this.state.categories.map(category => {
return (
<option key={category._id} value={category._id}>
{category.name}
</option>
)
})}
</Input>
) : null}
</Row>
)
}