#javascript #reactjs #semantic-ui
#javascript #reactjs #semantic-ui
Вопрос:
У меня есть выпадающий список с 5 вариантами. Мне нужно сохранить выбранный параметр в моем состоянии как listValue
.
Мой список параметров и состояние
const options = [
{ key: 1, text: 'OK', value: 1 },
{ key: 2, text: 'Avvikelse', value: 2 },
{ key: 3, text: 'Ej Relevant', value: 3 },
{ key: 4, text: 'Observation', value: 4 },
{ key: 5, text: 'Saknas', value: 5 },
]
export default class ConfirmationModal extends React.Component {
state = {
listValue: 'Status'
}
Мой список (из semantic-ui)
dropDownList = () => (
<Dropdown
placeholder={this.state.listValue}
clearable
options={options}
selection
/>
)
Как я могу сохранить выбранный параметр в моем состоянии?
Комментарии:
1.
how i can store the users option into the state
вы хотите передать те же точные значения из options в listValue ? Дублирование массива?2. Не совсем, желание состоит в том, чтобы установить значение параметра в ‘listValue’. Измените значение текущего состояния.
3. Используйте setState()
4. Вы просто хотите сохранить один параметр в listValue ?
Ответ №1:
Вы можете добавить onChange
обработчик и поместить value
заданный обработчику в состояние вашего компонента.
Пример
const options = [
{ key: 1, text: "OK", value: 1 },
{ key: 2, text: "Avvikelse", value: 2 },
{ key: 3, text: "Ej Relevant", value: 3 },
{ key: 4, text: "Observation", value: 4 },
{ key: 5, text: "Saknas", value: 5 }
];
class DropdownExampleControlled extends React.Component {
state = {
options,
value: options[0].value
};
handleChange = (_e, { value }) => this.setState({ value });
render() {
const { value, options } = this.state;
const currentOption = options.find(o => o.value === value);
return (
<Grid columns={2}>
<Grid.Column>
<Dropdown
onChange={this.handleChange}
options={options}
placeholder="Choose an option"
selection
value={value}
/>
</Grid.Column>
<Grid.Column>
<Segment secondary>
<pre>Current value: {currentOption.text}</pre>
</Segment>
</Grid.Column>
</Grid>
);
}
}
Комментарии:
1. Есть ли способ обновить дополнительные ключи для состояния
handleChange
. В моем последнем сообщении я изо всех сил пытаюсь обновитьkey
другое, чемvalue
указать, когда сделан выбор
Ответ №2:
Как я вас понял, вам нужно сохранить в состоянии значения, которые выбрал пользователь? Если да, вам нужно событие, например, onChange, что означает, что пользователь видит этот конкретный параметр из списка. и установите его в состояние
onChange(selectedValue) {
this.setState({listValue: selectedValue});
}
Ответ №3:
добавьте эту функцию в свой компонент:
handleChange = (_p, { value }) => {
this.setState({ listValue: value});
};
добавьте его в качестве реквизита в свой выпадающий список:
<Dropdown onChange={this.handleChange} placeholder={this.state.listValue} clearable options={options} selection />
Ответ №4:
Управление состоянием обрабатывается с помощью setState
. Простой пример:
Пример песочницы
const options = [
{ key: 1, text: 'OK', value: 1 },
{ key: 2, text: 'Avvikelse', value: 2 },
{ key: 3, text: 'Ej Relevant', value: 3 },
{ key: 4, text: 'Observation', value: 4 },
{ key: 5, text: 'Saknas', value: 5 },
]
class App extends Component {
constructor(props){
super(props)
this.state = {
listValue: ''
}
}
componentWillMount() //before render
{
this.setState({
listValue: options[1].text //storing text from second line
})
}
render() {
return (
<div>
{this.state.listValue}
</div>
);
}
}
Отображается: Avvikelse