Муравьиные формы: почему значения разные Требуется объяснение? - PullRequest
1 голос
/ 14 апреля 2020

Здесь код имеет два консольных журнала 1 и 2, но фактический результат должен быть одинаковым, но при удалении пользовательского кода он получается другим: https://codesandbox.io/s/control-between-forms-ant-design-demo-6q86b?file= / index. js: 2828-3696

            let users = getFieldValue("users") || [];
            const handleClick = id => {
              setFieldsValue({
                users: users.filter(item => item.name !== id)
              });
              console.log("1" + users);
            };
            console.log("2" + users);

            return users.length ? (
              <ul>
                {users.map((user, index) => (
                  <li key={index} className="user">
                    <Avatar icon={<UserOutlined />} />
                    {user.name} - {user.age}
                    <CloseOutlined
                      onClick={() => handleClick(user.name)}
                      style={{ paddingLeft: 15 }}
                    />
                  </li>
                ))}
              </ul>```


1 Ответ

0 голосов
/ 14 апреля 2020

Функция handleClick связана, когда у users есть (например) 2 пользователя. Когда вы удаляете одного, вы печатаете 2 пользователя, а затем 1 удаляется, что вызывает повторную визуализацию. Это вызывает второй файл console.log, который печатает 1 пользователя (и повторно связывает функцию с новым результатом let users = getFieldValue("users") || [];

. Я не уверен, что вы используете setState, но если вы это сделаете: setState hasn не обновлять сразу, оно асинхронное, поэтому вы не можете проверить значение в строке после оператора set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...