简体   繁体   English

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

[英]How should I refactor this code to prevent function was used before it was defined

I'm getting this error 'subscribe' was used before it was defined.eslint(no-use-before-define) here: 我在'subscribe' was used before it was defined.eslint(no-use-before-define)了此错误'subscribe' was used before it was defined.eslint(no-use-before-define)在这里:

    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;
        });
    }

What should be the approach to follow here? 在这里应该遵循什么方法?

I tried to switch function with const however, I'll have the same problem since I'm using value inside subscribe(). 我尝试用const切换function ,但是由于我在subscribe()中使用value ,所以我也会const同样的问题。

useForm() is being used from another file and it's called after submitting a form (callback() -> subscribe()): useForm()正在另一个文件中使用,并且在提交表单(callback()-> useForm()后调用它:

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

What you can do, if you don't want to disable any rules, is declare function up front. 如果您不想禁用任何规则,可以做的是预先声明函数。 Something like this: 像这样:

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;
    });
 }

example in ESLint editor ESLint编辑器中的示例

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM