javascript - React Rails 将 props 传递给 React Select
问题描述
我正在尝试使用 React rails 将我的 Rails 数据库中的道具传递给 React Select 组件,但文本在选择选项中显得不可见。
看法:
= react_component('SelectSearch', options: Course.all.as_json(only: [:title]))
反应选择组件:
import React from 'react';
import Select from 'react-select';
class SelectSearch extends React.Component {
constructor(props) {
super(props)
}
state = {
selectedOption: null,
};
handleChange = selectedOption => {
this.setState({ selectedOption });
console.log(`Option selected:`, selectedOption);
};
render() {
const { selectedOption } = this.state;
return (
<Select
value={selectedOption}
onChange={this.handleChange}
options={this.props.options}
/>
);
}
}
export default SelectSearch;
当单击选择中的某些内容时,它会记录控制台日志,例如:
Option selected: {title: "English"}
但是打开选择,它完全是空白的。显然那里有一个可以点击的选项,但没有显示任何内容。同样对于搜索,不显示任何选项。
我知道这是因为我错误地传递了道具,或者错误地处理了数据,我不希望{title: "English"}
我只是想要English
但不确定如何正确过滤它。
解决方案
我花了一段时间才弄清楚,但得到了这个工作:
= react_component('SelectSearch', data: Course.all.as_json(only: [:title]))
import React from 'react';
import Select from 'react-select';
class SelectSearch extends React.Component {
constructor(props) {
super(props);
}
state = {
selectedOption: null,
};
handleChange = selectedOption => {
this.setState({ selectedOption });
console.log(`Option selected:`, selectedOption);
};
render() {
const { selectedOption } = this.state;
return (
<Select
value={selectedOption}
onChange={this.handleChange}
options={this.props.data}
getOptionLabel={(option) => option.title}
getOptionValue={(option) => option.title}
/>
);
}
}
export default SelectSearch;
React-select 需要 avalue
和 a label
,这似乎是通过它的最简单方法。
推荐阅读
- r - 使用 s3 方法和对象属性格式化 ggplot 比例尺
- c# - 为什么我的 C# Windows 窗体应用程序会生成此代码?
- c# - 数据表未显示在结果中(显示 json 类型数据)
- amazon-web-services - 创建 CloudFront 分配时出错:NoSuchOrigin:
- java - 会话可分发 EAP 它不起作用
- python - 列包含第 1 列
- python - Pandas Groupby 对不同的列使用不同的 agg 方法
- excel - 如何使宏在动态表的每个单元格中随变化而运行?Excel VBA
- python - 如何仅使用 python 代码在二进制文件中查找地址?
- fabricjs - 使用 fabric.js lanczos 过滤器调整画布大小