简体   繁体   English

我想使用 useState 更改数组中对象的值

[英]I want to change the value of an object in array using useState

The language in state.状态中的语言。 data is an array.数据是一个数组。
It contains Language and Level objects.它包含语言和级别对象。

I want to put the value of the argument in the level of state.我想把参数的值放在状态级别。
language when the process of onClickUpdatelanguage is called.调用onClickUpdatelanguage过程时的语言。

interface Data {
  name: string;
  language: Language[];
}

interface Language {
  lang: Lang;
  level: Level;
}
interface Lang {
  id: name;
  name: string
}
interface Level {
  id: name;
  name: string
}

interface State {
  data: Data;
  text: string;
  modal: boolean
}

const Index: FC = () => {
  const [state, setState] = useState<State>({
    data: initialdata,
    text: '',
    modal: false,
  });


const onClickUpdateLanguage = (value: Level, updateStateId: number) => {
    const target = state.data.language.find((st) => {
      return st.language.id === updateStateId;
    });

}; };

You can use the setState functionality and map over the current state date.您可以使用 setState 功能并映射当前状态日期。 Then edit the data where necessary.然后在必要时编辑数据。

setState({
    data: state.data.language.map(iState => {
      if(iState.language.id === updateStateId) {
          iState.language.level = value;
      }
      return iSate;
    })
});

I've might missed out in which parameter you want to change exactly, but this should give you some direction.我可能错过了您想要准确更改哪个参数,但这应该会给您一些指导。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM