Javascript 我应该如何重构此代码以防止函数在定义之前被使用

Javascript 我应该如何重构此代码以防止函数在定义之前被使用,javascript,reactjs,jsx,eslint,Javascript,Reactjs,Jsx,Eslint,我犯了这个错误 “subscribe”在定义之前已使用。eslintno-use-before-define此处: 这里应该遵循什么方法 我试图用const切换函数,但是,由于我在subscribe中使用了value,所以我也会遇到同样的问题 useForm正在从另一个文件中使用,在提交表单回调->订阅后调用它: const handleSubmit = (event) => { if (event) event.preventDefault(); if (values

我犯了这个错误 “subscribe”在定义之前已使用。eslintno-use-before-define此处:

这里应该遵循什么方法

我试图用const切换函数,但是,由于我在subscribe中使用了value,所以我也会遇到同样的问题

useForm正在从另一个文件中使用,在提交表单回调->订阅后调用它:

  const handleSubmit = (event) => {
    if (event) event.preventDefault();
    if (values.email !== undefined && values.email !== '') {
      callback(event);
    }
  };

如果您不想禁用任何规则,您可以做的是预先声明函数。大概是这样的:

var subscribe;

const { values, handleChange, handleSubmit } = useForm(subscribe);

function subscribe() {
  axios.post(fAction, values, {headers: {'Accept': 'application/json'}} )
        then((response) => {
    document.querySelector('#js-response-newsletter-message > p').innerText = 
        response.data.message;
    });
 }

看-我认为这是一个禁用规则的好地方。尽管如此,从这里的代码还不清楚这些值是否会及时定义,这使得违反规则是可以理解的哇,这是一个有趣的策略,我很惊讶它被允许了。也许这不是最好的办法,但它确实有效!我进入了另一个eslint验证eslint no-var。我设法让它这样工作:让订阅;订阅==>{…}
var subscribe;

const { values, handleChange, handleSubmit } = useForm(subscribe);

function subscribe() {
  axios.post(fAction, values, {headers: {'Accept': 'application/json'}} )
        then((response) => {
    document.querySelector('#js-response-newsletter-message > p').innerText = 
        response.data.message;
    });
 }