Arun Kumar
Arun Kumar

Reputation: 197

React JS - Expected to return a value at the end of arrow function ES lint Error

I'm checking if the env is development or prod, If development I'm returning mock data else I'm making an API call to fetch data.

Now I'm getting this ES lint Error,

Expected to return a value at the end of arrow function.

What I'm doing wrong here ? please help

export const getData = (request: any) => {
  if (process.env.NODE_ENV !== 'development') {
    axios.post(EMAIL_DISPUTE_API, { request })
      .then((res) => {
        return res.data;
      })
      .catch((e) => {
        console.log(e);
      });
  } else {
    return emailDisputeMockResponse;
  }
};

Upvotes: 0

Views: 823

Answers (2)

fizz
fizz

Reputation: 16

in case of your function,if block don't return value but else return emailDisputeMockResponse, so you need declare return value type for your function and return value in the catch block, just like following code snippet

export const getData = async (request: any): Promise<emailDisputeResponse | null> => {
  let result: emailDisputeResponse | null
  if (process.env.NODE_ENV !== 'development') {
    result = await axios.post(EMAIL_DISPUTE_API, { request })
      .then((res) => {
        return res.data;
      })
      .catch((e) => {
        console.log(e);
        return null;
      });
  } else {
    result = emailDisputeMockResponse;
  }
  return result
};

Upvotes: 0

Borni.Mr
Borni.Mr

Reputation: 679

Requires return statements to either always or never specify values.

Try without else bloc

export const getData = (request: any) => {
  if (process.env.NODE_ENV !== 'development') {
    axios.post(EMAIL_DISPUTE_API, { request })
      .then((res) => {
        return res.data;
      })
      .catch((e) => {
        console.log(e);
      });
  }
    return emailDisputeMockResponse;
};

Upvotes: 1

Related Questions