Переменная, установленная внутри функции, не определенная в другой функции - PullRequest
1 голос
/ 30 сентября 2019

Я работаю с response.js, и у меня есть следующий код:


function App() {
  let Submitable;
  const [values, setValues] = useState([])

 //...



  onTicket.save = () => {
    console.log(Submitable) // logs undefiened
    if (Submitable) {
      return true
    } else {
      return `Please fill out the following fields before submitting:${values.map(el => ` ${el.name}`)}`
    }
  })

  useEffect(() => {
    if (values.length === 0) {
      Submitable = true
      //enableSave
    } else {
      Submitable = false
      //disableSave
    }
  }, [values])

  return (
    <>
      ///jsx code block
    </>
  );
}

export default App;

Я бы подумал, что в настройках функции useEffect Submitable в true или false, значение будет переноситься в другие функциино при вызове регистрируемые журналы не определены. И если я пытаюсь передать Submitable в качестве параметра, он также записывает в журнал неопределенное значение.

1 Ответ

1 голос
/ 30 сентября 2019

Назначения изнутри useEffect будут потеряны при каждом рендере. Чтобы сохранить значение во времени, сохраните его в хуке useRef и сохраните изменяемое значение в current свойстве

const Component = () =>{
    const submitable = useRef()

    useEffect(() =>{
        submitable.current = 'foo'
    },[])

    console.log(submitable.current) // 'foo'
}
...