Я должен изменить значение элемента на определенную глубину, я использую loda sh, но у меня возникают проблемы.
Я делаю копию объекта и применяю loda sh установить копию Я изменяю оригинал, чтобы вы были.
Я пытаюсь изменить состояние, но оно не обновляется.
Вы можете мне помочь.
Ссылка: коды и поле
Код:
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import TextField from "@material-ui/core/TextField";
import ReactJson from "react-json-view";
import lodash from "lodash";
const useStyles = makeStyles(theme => ({
root: {
"& > *": {
margin: theme.spacing(1),
width: 200
}
}
}));
export default function BasicTextFields() {
const classes = useStyles();
const [state, setState] = React.useState({
name: "James",
surname: "bond",
card: {
id: 7,
group: "J"
},
scope: [{ scope: "user", actions: ["create", "delete"] }]
});
const handleChangeField = field => ({ target: { value } }) => {
let newState = Object.assign(state, {});
console.log(state, field, value);
lodash.set(newState, field, value);
setState(newState);
};
console.log("Change", state);
return (
<form className={classes.root} noValidate autoComplete="off">
<ReactJson
src={state}
theme={"solarized"}
enableClipboard={false}
displayObjectSize={false}
/>
<TextField
id="standard-basic"
label="Name"
onChange={handleChangeField("name")}
/>
<TextField
id="standard-basic"
label="Group"
onChange={handleChangeField("card.group")}
/>
<TextField
id="standard-basic"
label="Action[0]"
onChange={handleChangeField("scope[0].actions[0]")}
/>
</form>
);
}