react-select :选项 isSelected 始终为真
react-select : the option `isSelected` is always true
未选择任何内容时
当没有选择任何东西时,它工作得很好。
选中一个选项时(问题)
正如你在上面看到的,即使我选择了一个选项(ash),它也说所有都被选中了。
我做了 console.log(isSelected)
,它说所有内容都已选择 true
..
应该是这样的...
我复制了很多代码,修改了几行。
这是我的代码
在此先感谢您对我的帮助!
有什么建议可以打我哦!
const dot = (color = '#ccc') => ({
display: 'flex',
alignItems: 'center',
':before': {
backgroundColor: color,
borderRadius: 10,
content: '" "',
display: 'block',
marginRight: 10,
height: 15,
width: 15,
},
});
const colourStyles = {
control: (styles, { selectProps: { width } }) => ({
...styles,
width: width,
}),
option: (styles, { data, isSelected, isFocused }) => {
const color = chroma(data.color);
return {
...styles,
backgroundColor: isSelected
? data.color
: isFocused
? color.alpha(0.1).css()
: null,
color: isSelected
? chroma.contrast(color, 'white') > 2
? 'white'
: 'black'
: data.color,
};
},
input: (styles) => ({ ...styles, ...dot() }),
placeholder: (styles) => ({ ...styles, ...dot() }),
singleValue: (styles, { data }) => ({ ...styles, ...dot(data.color) }),
};
const SelectModule = observer(({ label, value }) => {
const [selectedOption, setSelectedOption] = useState('');
const options = colorChipListStore.colorList.map((item) => ({
color: item.hexId,
label: item.label,
}));
const setColors = (color) => {
setSelectedOption(color);
};
function customTheme(theme) {
return {
...theme,
colors: {
...theme.colors,
primary: '#AD9EE5',
},
};
}
return (
<Container>
{label && <Label>{label}</Label>}
<OptionWrapper>
<Select
width='100%'
options={options}
styles={colourStyles}
theme={customTheme}
isSearchable
onChange={setColors}
defaultValue={selectedOption}
/>
</OptionWrapper>
</Container>
);
});
您的选项对象没有值键。我也得到了这个但是当我将选项更改为格式时:
选项 = [{标签:'',值:''}]
我能够选择正确的选项。默认行为是使用 'value' 键来检查所选选项。您可以通过使用 'isOptionSelected' 并将选项重置为您想用作检查的任何键来更改此行为。您还可以为对象添加值。
看到这个GitHub issue。
未选择任何内容时
当没有选择任何东西时,它工作得很好。
选中一个选项时(问题)
正如你在上面看到的,即使我选择了一个选项(ash),它也说所有都被选中了。
我做了 console.log(isSelected)
,它说所有内容都已选择 true
..
应该是这样的...
我复制了很多代码,修改了几行。
这是我的代码
在此先感谢您对我的帮助!
有什么建议可以打我哦!
const dot = (color = '#ccc') => ({
display: 'flex',
alignItems: 'center',
':before': {
backgroundColor: color,
borderRadius: 10,
content: '" "',
display: 'block',
marginRight: 10,
height: 15,
width: 15,
},
});
const colourStyles = {
control: (styles, { selectProps: { width } }) => ({
...styles,
width: width,
}),
option: (styles, { data, isSelected, isFocused }) => {
const color = chroma(data.color);
return {
...styles,
backgroundColor: isSelected
? data.color
: isFocused
? color.alpha(0.1).css()
: null,
color: isSelected
? chroma.contrast(color, 'white') > 2
? 'white'
: 'black'
: data.color,
};
},
input: (styles) => ({ ...styles, ...dot() }),
placeholder: (styles) => ({ ...styles, ...dot() }),
singleValue: (styles, { data }) => ({ ...styles, ...dot(data.color) }),
};
const SelectModule = observer(({ label, value }) => {
const [selectedOption, setSelectedOption] = useState('');
const options = colorChipListStore.colorList.map((item) => ({
color: item.hexId,
label: item.label,
}));
const setColors = (color) => {
setSelectedOption(color);
};
function customTheme(theme) {
return {
...theme,
colors: {
...theme.colors,
primary: '#AD9EE5',
},
};
}
return (
<Container>
{label && <Label>{label}</Label>}
<OptionWrapper>
<Select
width='100%'
options={options}
styles={colourStyles}
theme={customTheme}
isSearchable
onChange={setColors}
defaultValue={selectedOption}
/>
</OptionWrapper>
</Container>
);
});
您的选项对象没有值键。我也得到了这个但是当我将选项更改为格式时: 选项 = [{标签:'',值:''}] 我能够选择正确的选项。默认行为是使用 'value' 键来检查所选选项。您可以通过使用 'isOptionSelected' 并将选项重置为您想用作检查的任何键来更改此行为。您还可以为对象添加值。
看到这个GitHub issue。