简体   繁体   English

材料 ui slider 组件 onChange 事件不适用于 Fromik handleChange 事件

[英]material ui slider component onChange event not working with Fromik handleChange event

The initial formic value is taken by the slider but Formik handleChange event not update the slider value初始formic 值由slider 获取,但Formik handleChange 事件不会更新slider 值

Formik function福米克 function

const formik = useFormik({
        initialValues: {
            slide: 50,
        },
        validationSchema: Yup.object({
            slide: Yup.number()
                .min(100, 'must be grater than 100'),
        }),
        onSubmit: values => {
            alert(JSON.stringify(values, null, 2));
        },
    });

material ui slider component with onChange event, it get initial formik value but not update it具有 onChange 事件的材料 ui slider 组件,它获取初始 formik 值但不更新它

<Slider
    name="slide"
    id="slide"
    valueLabelDisplay="auto"
    aria-label="term slider"
    defaultValue={formik.values.slide}
    onChange={formik.handleChange}
    min={1}
    max={110}
  />

Please check the codesandbox sample 请检查代码框示例

you can use setFieldValue :你可以使用setFieldValue

import React from "react";
import "./styles.css";
import Slider from "@material-ui/core/Slider";
import { useFormik } from "formik";
import * as Yup from "yup";
import Button from "@material-ui/core/Button";
import { Formik } from "formik";

export default function App() {
  return (
    <div>
      <Formik
        initialValues={{ slide: 50 }}
        validationSchema={Yup.object({
          slide: Yup.number().min(50, "must be grater than 100")
        })}
        onSubmit={(values, { setSubmitting }) => {
          setTimeout(() => {
            alert(JSON.stringify(values, null, 2));
            setSubmitting(false);
          }, 400);
        }}
      >
        {({
          values,
          errors,
          touched,
          handleChange,
          handleBlur,
          handleSubmit,
          isSubmitting,
          setFieldValue
          /* and other goodies */
        }) => (
          <form onSubmit={handleSubmit}>
            <Slider
              name="slide"
              id="slide"
              valueLabelDisplay="auto"
              aria-label="term slider"
              value={values.slide}
              onChange={(e, v) => {
                setFieldValue('slide', v);
              }}
              min={1}
              max={110}
            />
            {errors.slide && touched.slide && errors.slide}
            <button type="submit" disabled={isSubmitting}>
              Submit
            </button>
          </form>
        )}
      </Formik>
    </div>
  );
}

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

相关问题 Material UI 中 Slider 组件的 onChange 事件池 - onChange Event Pooling for Slider component in Material UI onChange 事件上的 Blur Material UI Select 组件 - Blur Material UI Select component on the onChange event 在 React 组件中使用 Material UI 选项卡 handleChange function 中的 onChange - Use onChange in Material UI tabs handleChange function in React component handleChange 事件侦听器不适用于复选框组件 - handleChange event listener not working for checkbox component Formik 的 handleChange 道具不处理复选框 onChange 事件 - Checkbox onChange event is not handled by handleChange props by Formik 反应。 Fromik。 Material-ui表单提交事件测试使用react-testing-library失败 - React. Fromik. Material-ui form submit event testing fails using react-testing-library Material UI React Slider 组件在移动设备上不起作用 - Material UI React Slider Component Not Working on mobile 以组件为数据的材料表未在 onChange 事件中传递组件上下文 - Material-table with component as data not passing the component context in onChange event React onChange 事件返回 TypeError: props.handleChange is not a function - React onChange event returns a TypeError: props.handleChange is not a function 从 inputComponent 中捕获 onChange 事件传递给 OutlinedInput、Material UI - Capture onChange event from inputComponent passed to OutlinedInput, Material UI
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM