小编Mic*_*cha的帖子

Vue 在复制数据后更改数据中的数组

所以我在 vue 中有这个代码:

export default {
 name: 'Test',
  data() {
    return {
      test1: ['1', '2', '3'],
      test2: [{
        name: 'Hello'
      }, {
        name: 'Number two'
      }, {
        name: 'What ever'
      }], 
     };
  },
 created() {    
    const first = [...this.test1];
    first.forEach((elm, index) =>  first[index] = 'New');
    console.log('first: ', first);
    console.log('test1 in data', this.test1);

    const second = [...this.test2];
    second.forEach(elm => elm.name = 'New');
    console.log('second: ', second);
    console.log('test2 in data', this.test2);
  },
}
Run Code Online (Sandbox Code Playgroud)

在设置数组“first”(应该是不引用数据“test1”数组的副本)的每个项目的值后,每个项目都等于“new”。this.test1 的值不会改变。

我对 test2 也做了同样的事情。复制并将每个项目的值更改为“新建”。但是现在数据数组'test2'的值在每个项目中也有'New'。

我不知道为什么会这样。有任何想法吗?

javascript arrays vue.js

6
推荐指数
1
解决办法
3851
查看次数

Formik 动态设置数组中元素的FieldValue

我们有一个带有翻译的 Formik 表格。初始值如下所示:

{
  // other stuff here like id, createdAt, etc.
  translations: [
   {
     languageCode: 'de',
     name: 'German',
   },
   {
     languageCode: 'fr',
     name: 'French',
   },
   {
     languageCode: 'it',
     name: 'Italian',
   }
  ]
}
Run Code Online (Sandbox Code Playgroud)

selectedLanguage等于当前选择的语言 'de' | 'fr' | '它'。然后我们循环并availableLanguages为每个字段创建和输入字段,如下所示:

{
    languages.map((lang, ind) => (
        <div key={ind}>
            {selectedLanguage === lang && (
                <FormField>
                    <Input
                        name="Topic"
                        value={
                            values.translations?.find(
                                elm => elm.languageCode === lang
                            )?.name || ""
                        }
                        onChange={(v: React.ChangeEvent<HTMLInputElement>) => {
                            // Doesn't work
                            setFieldValue(
                                `${
                                    values.translations?.find(
                                        elm …
Run Code Online (Sandbox Code Playgroud)

javascript forms typescript reactjs formik

4
推荐指数
1
解决办法
9735
查看次数

标签 统计

javascript ×2

arrays ×1

formik ×1

forms ×1

reactjs ×1

typescript ×1

vue.js ×1