如何在反应钩子中更新状态的单个属性?

Ary*_*ves 0 javascript reactjs react-hooks

我正在尝试更改状态挂钩,但出现此错误...我知道另一种更改方法,但它应该适用于传播语法,对吗?

export default function App() {
  const [state, setState] = {
    sld_url: "",
    geojson_url: "",
  }

  const handleSldUrlChange = event => {
    setState({...state, sld_url: event.target.value})
  }

  return (
    <TextField
     label="SLD URL"
     value={state.sld_url}
     className={classes.textField}
     onChange={handleSldUrlChange}
     margin="normal"
     variant="outlined"
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 6

第一件事是你需要useState

const [state, setState] = useState({
    sld_url: "",
    geojson_url: "",
  })

Run Code Online (Sandbox Code Playgroud)

比在里面handleSldUrlChange function你可以使用自定义回调来更新状态

const handleSldUrlChange = event => {
    setState(prev => {...prev, sld_url: event.target.value})
   //or
   //setState({...state,sld_url: event.target.value})
  }
Run Code Online (Sandbox Code Playgroud)

演示:https : //stackblitz.com/edit/react-mv8lsz