React Select with Async - 无法加载选项

时间:2017-09-29 16:22:58

标签: reactjs react-select

我正在尝试创建一个react-select异步输入字段,根据用户输入提供模型编号。我的API正在运行,Fetch正在生成,它正在生成填充下拉列表所需的确切“选项”对象(我检查了网络请求和控制台)。

问题是当我开始输入时,下拉列表显示它正在加载,但没有添加任何选项。

enter image description here

以下是Fetch调用的示例输出: {options: [{value: "WA501006", label: "WA501006"}]}.

这是我的代码:

getModelsAPI = (input) => {

        if (!input) {
            return Promise.resolve({ options: [] });
        }

        const url = `(...)?cmd=item_codes_json&term=${input}`;

        fetch(url, {credentials: 'include'})
            .then((response) => {
                return response.json();
            })
            .then((json) => {
                const formatted = json.map((l) => {
                    return Object.assign({}, {
                        value: l.value,
                        label: l.label
                    });
                })
                return { options: formatted }
            })
    }

onChange = (value) => {
    this.setState({
        value: value
    })
}

<Select.Async
  value={this.state.value}
  loadOptions={this.getModelsAPI}
  placeholder="Enter Model"
  onChange={this.onChange}
/>

1 个答案:

答案 0 :(得分:4)

我认为你需要从getModelsAPI函数返回:

getModelsAPI = (input) => {

        if (!input) {
            return Promise.resolve({ options: [] });
        }

        const url = `(...)?cmd=item_codes_json&term=${input}`;

        return fetch(url, {credentials: 'include'})
            .then((response) => {
                return response.json();
            })
            .then((json) => {
                const formatted = json.map((l) => {
                    return Object.assign({}, {
                        value: l.value,
                        label: l.label
                    });
                })
                return { options: formatted }
            })
    }