Допустим, у меня есть некоторые свойства, которые могут быть равны некоторым возможным вариантам. Я определю их оба в someConstants. js
const possibleOptions = [
{key: '1', text: "some text 1", value: "some_text_1"},
{key: '2', text: "some text 2", value: "some_text_2"},
];
const someProperties = {
flags: []
};
export { someProperties, possibleOptions };
Я хочу, чтобы someProperties.flags
был обновлен на possibleOptions
при отправке формы someForm. js
import React from "react";
import { someProperties, possibleOptions } from "./someConstants";
import { Form } from "semantic-ui-react";
import "./styles.css";
class SomeForm extends React.Component {
state = someProperties;
handleSubmit = event => {
event.preventDefault();
this.props.onSubmit(this.state);
};
onChange = event => {
const {
target: { name, value }
} = event;
this.setState({
[name]: value
});
};
render() {
return (
<Form onSubmit={this.handleSubmit} onChange={this.onChange}>
<Form.Dropdown
label="Flags"
placeholder="Flags"
name="flags"
fluid
multiple
search
selection
options={possibleOptions}
/>
<Form.Button type="submit">Submit</Form.Button>
</Form>
);
}
}
export { SomeForm };
Эти значения будут отображаться с помощью showFlags. js
import React from "react";
import "./styles.css";
class ShowFlags extends React.Component {
displayList = list => {
return(
<ol>
{list.map(flag => (
<li key={flag}>{flag}</li>
))}
</ol>
);
}
render() {
return (
<div>
{this.props.flagProps.flags}
</div>
);
}
}
export { ShowFlags };
Взаимодействие этих классов может быть показано далее в index. js
import React from "react";
import ReactDOM from "react-dom";
import { SomeForm } from "./someForm";
import { ShowFlags } from "./showFlags";
class App extends React.Component {
state = {
flagProps: {},
submitted: false
};
handleSubmit = fields => {
this.setState({
flagProps: { ...fields },
submitted: true
});
console.log("handleSubmit flagProps:" + this.state.flagProps);
};
render() {
return (
<>
<div className="Section">
<div className="Title">flagProps form</div>
<SomeForm flagProps={this.state.flagProps} onSubmit={this.handleSubmit} />
</div>
<div className="Section">
<div className="Title">The result</div>
{this.state.submitted ? (
<ShowFlags flagProps={this.state.flagProps} />
) : (
<div>Appears on submission.</div>
)}
</div>
</>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
Как этого добиться? Подводя итог:
Текущее поведение Я могу выбрать параметры, но отправка формы не приводит к отображению. ShowFlags.render()
ничего не показывает.
Желаемое поведение Я могу выбрать опции, и эти опции отображаются ShowFlags.render()
при отправке формы.
Если это имеет значение, это использует semanti c -ui.