【发布时间】:2021-03-19 12:31:56
【问题描述】:
我有一个多重下拉选择,可让您选择食物项目,然后单击时可以在末尾添加文本值。我正在为 Dropdown 组件使用“semantic-UI-react”。我的问题是,当我将新值添加到嵌套对象时,标签会消失。我可以使用所需的值设置标签或嵌套对象,但是当我尝试一起做时,标签总是消失。图片供参考
这是我以这种方式工作的代码:
const renderLabel = (item, i, { value }) => ({
content: value,
onClick: (e) => {
const servingSize = prompt(value + ' serving size:');
if (servingSize !== null) {
value = item.text + ' ' + servingSize;
e.target.firstChild.textContent = value;
};
}
});
<Dropdown clearable id="breakfast-fruits1" renderLabel={renderLabel} search allowAdditions onAddItem={handleAddition} className="dropdown" placeholder="Fruits" fluid multiple selection options={fruits} onChange={handleChange} />
当我尝试设置状态时,最后一个标签消失了。
const renderLabel = (item, i, { value }) => ({
content: value,
onClick: (e) => {
const servingSize = prompt(value + ' serving size:');
if (servingSize !== null) {
value = item.text + ' ' + servingSize;
e.target.firstChild.textContent = value;
setResult((prevResult) => {
prevResult.monday.breakfast.fruits[i] = value;
return prevResult;
})
};
}
});
关于如何使其工作或设置更好的任何想法?我尝试了许多不同的方法来呈现标签并更改状态/结果。让我知道我是否可以在问题中包含其他任何内容以使其更易于解决。
这是我的水果状态:
const [ fruits, setFruits ] = useState([
{ key: 'Apple', text: 'Apple', value: 'Apple' },
{ key: 'Apricot', text: 'Apricot', value: 'Apricot' },
{ key: 'Banana', text: 'Banana', value: 'Banana' },
{ key: 'Berries', text: 'Berries', value: 'Berries' },
{ key: 'Blackberries', text: 'Blackberries', value: 'Blackberries' },
{ key: 'Blueberries', text: 'Blueberries', value: 'Blueberries' },
{ key: 'Cantaloupe', text: 'Cantaloupe', value: 'Cantaloupe' },
{ key: 'Cherries', text: 'Cherries', value: 'Cherries' },
{ key: 'Grapefruit', text: 'Grapefruit', value: 'Grapefruit' },
{ key: 'Honeydew', text: 'Honeydew', value: 'Honeydew' },
{ key: 'Kiwi', text: 'Kiwi', value: 'Kiwi' },
{ key: 'Melon', text: 'Melon', value: 'Melon' },
{ key: 'Nectarine', text: 'Nectarine', value: 'Nectarine' },
{ key: 'Orange', text: 'Orange', value: 'Orange' },
{ key: 'Papaya', text: 'Papaya', value: 'Papaya' },
{ key: 'Peach', text: 'Peach', value: 'Peach' },
{ key: 'Pear', text: 'Pear', value: 'Pear' },
{ key: 'Pineapple', text: 'Pineapple', value: 'Pineapple' },
{ key: 'Plum', text: 'Plum', value: 'Plum' },
{ key: 'Raspberries', text: 'Raspberries', value: 'Raspberries' },
{ key: 'Strawberries', text: 'Strawberries', value: 'Strawberries' },
{ key: 'Tangerine', text: 'Tangerine', value: 'Tangerine' },
{ key: 'Watermelon', text: 'Watermelon', value: 'Watermelon' }
]);
这是我的 onChange 函数:
const handleChange = (e, { value }) => {
const newData = update(result, {
monday: {breakfast: {fruits: {$set: value}}}
});
setResult(newData);
};
这是我的 handleAddition 函数:
const handleAddition = (e, data) => {
console.log(data.value);
setFruits((prevFruits) => {
return [
...prevFruits,
{ text: data.value, key: data.value, value: data.value }
];
});
};
【问题讨论】:
标签: javascript reactjs react-native react-hooks semantic-ui-react