currentValue.indexOf не является функцией в getValueForCheckbox в Formik - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь создать компонент флажка группы с formik, как на фотографии таблица группы флажков

Мой флажок comp onet код - это:

const CheckBox = ({ children, ...props }) => {
  const [field, meta] = useField({ ...props, type: "checkbox" });
  return (
    <>
      <label className="form-check-label">
        <input type="checkbox" {...field} {...props} />
        {children}
      </label>
      {meta.touched && meta.error ? (
        <div className="text text-danger">{meta.error}</div>
      ) : null}
    </>
  );
};

, и это реализация группы флажков:

                <thead className="thead-light">
                  <tr>
                    <th scope="col">#</th>
                    {data.periods
                      ? data.periods.map((time, index) => (
                          <th scope="col" key={index}>
                            {time[0]}
                          </th>
                        ))
                      : null}
                  </tr>
                </thead>
                <tbody>
                  {data.day_of_week
                    ? data.day_of_week.map((day, index) => (
                        <tr key={index}>
                          <th scop="row">{day[1]}</th>
                          {data.periods
                            ? data.periods.map((time, index) => (
                                <td key={index}>
                                  <CheckBox
                                    name="acceptedTime"
                                    key={index}
                                    value={time[0]}
                                  />
                                </td>
                              ))
                            : null}
                        </tr>
                      ))
                    : null}
                </tbody>
              </table>

Когда я нажмите на каждый из этих флажков, я получаю сообщение об ошибке currentValue.indexOf is not a function.

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 22 января 2020

Мы не можем видеть ваши «данные», что было бы полезно, но вкратце, библиотека, которую вы используете для своей формы, ожидает, что indexOf () сработает со значением флажка, но это не так.

Ваш код написан так, чтобы предположить, что «данные» имеют массив day_of_week и массив периодов, и что массив периодов элементы сами по себе итеративны (то есть массивы, строки и т. Д. c.) по крайней мере, с одним значением каждый. Когда вы пишете [0] там, вы даете обещание, что оно имеет хотя бы одно значение. И библиотека форм, которую вы используете, также , ожидая, что значение будет иметь свойство indexOf, которое было бы автоматически, если бы оно было строкой или массивом.

Я подозреваю, что time, который указывает на каждый элемент в вашем массиве periods, не определен, или является пустым массивом или строкой, или это какой-то тип, в котором произносить [0] для него не имеет смысла. И если это имеет смысл, то все, что у него есть (во время [0]), вероятно, не определено.

...