javascript - 函数内的变量集未在其他函数中定义

标签 javascript reactjs zendesk-app

我正在使用 react.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 记录未定义。如果我尝试将 Submitable 作为参数传递,它也会记录未定义。

最佳答案

useEffect 中的分配将在每次渲染时丢失。要随着时间的推移保留值,请将其存储在 useRef Hook 中,并将可变值保留在 current 属性中

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

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

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

关于javascript - 函数内的变量集未在其他函数中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58174893/

相关文章:

javascript - Twitter 提要不显示所有内容,它只是一个链接

javascript - React 仅触发一次单选按钮的更改事件

javascript - react : Conditional Render - "Cannot read property ' 0' of null"

reactjs - Yup 中的自定义验证方法抛出 TypeScript 错误

ios - "Ticket failed to send"到 Zendesk

javascript - 多维数组——根据indexOf值拼接全数组

javascript - Sequelize 迁移执行顺序

javascript - 使用图像文件创建 goog.ui.Button 实例