У меня есть таблица с именем и записью json в виде столбца. Я хочу создать форму, которая берет имя в виде строки и json-записи в формате JSON, используя ReactJS, и опубликовать ее в Phoenix API.
PS: я новичок в ReactJS. Извините, если это очень глупо.
interface Mystate
{
asset_meta_label: string;
asset_meta_attribute: JSON;
}
export default class Form extends React.Component<{}, Mystate> {
constructor(props: {}) {
super(props);
this.state = {
asset_meta_label: '',
asset_meta_attribute: {} //Error: Type '{}' is missing the following properties from type 'JSON': parse, stringify
};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit (event)
{
event.preventDefault();
fetch('/api/create', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
asset_class_meta:
{
asset_meta_label: this.state.asset_meta_label,
asset_meta_attribute: this.state.asset_meta_attribute
}
})
})
}
handleAssetClassMeta(event) {
this.setState({ asset_meta_label: event.target.value })
}
handleAssetMetaAttribute(event) {
this.setState({ asset_meta_attribute: event.target.value })
}
public render(): JSX.Element {
return (
<Main>
<h1>Add Asset Details</h1>
<form onSubmit={this.handleSubmit}>
<div className="field">
<label className="label">Asset Class</label>
<div className="control">
<input
className="input"
type="text"
placeholder="Enter Asset Id"
value = {this.state.asset_meta_label}
onChange = {this.handleAssetClassMeta.bind(this)}
/>
</div>
</div>
<br />
<div className="field">
<label className="label">Asset Class Attributes</label>
<div className="control">
<input
className="input"
type={JSON} //Error: Type 'JSON' is not assignable to type 'string'
placeholder="Enter Asset Class"
value = {this.state.asset_meta_attribute} //Type 'JSON' is not assignable to type 'string | number | string[] | undefined'.
onChange = {this.handleAssetMetaAttribute.bind(this)}
/>
</div>
</div>
<br />
<br />
<button
type="submit"
value="Submit"
className="button is-primary">
Submit
</button>
</form>
<button>
<Link to="/">Back to home</Link>
</button>
</Main>
);
}
}
Ошибка 1: для типа '{}' отсутствуют следующие свойства из типа 'JSON': parse, stringify
Ошибка 2: тип «JSON» нельзя назначить типу «строка»