react-hook-form material-ui Slider зацклился onChange

У меня есть компонент

import React, { forwardRef, useEffect } from 'react'
import uuid from 'react-uuid' 
import { useForm, Controller } from "react-hook-form";
import { Button, Box, Typography, Slider } from '@material-ui/core';

const MyRange = forwardRef(({item, submit, close}, ref) => {
  const { handleSubmit, reset, control, watch, register } = useForm();
  const c = watch()
  
  useEffect(()=>{
    console.log(c);
  },[c])

return (
    <form
      ref={ref}
      onSubmit={
        handleSubmit(submitRgb)
      }
    >
    {
      Object.keys(item).map((e)=>
        <Box display="flex" key={uuid()}>
          <Typography
          >
            {e}
          </Typography>
          <Box width="100%">
            <Controller
              name={e}
              control={control}
              defaultValue={item[e].value}
              render={
                ({onChange, value}) =>
                  <SelectRange
                    options={{
                      min: 0,
                      max: 255,
                      name: e,
                      value: value,
                      valueLabelDisplay: "auto",
                      onChange:(_e, val)=> {
                          onChange(val)
                      },
                    }}
                />}
              /> 
            </Box>
          </Box>
        )
      }
      <Box display="flex">
        <Button 
          onClick={()=>{
            reset()
            close()
          }}
        >
          Cancel
        </Button>
        <Button 
          type="submit"
        >
          Ok
        </Button>
      </Box
    </form>
  )
})

SelectRange

import React from 'react'
import { Slider } from '@material-ui/core';

const SelectRange = ({ options }) => {

  return (
    <Slider
      {...options}
    />
  )
}

в чем проблема: при изменении ползунка Slider функция onChange в Controller зацикливается

Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.


Ответы (0 шт):