axios.get('https://api.example.com/data/sample01', {
  timeout: 1000 // 1000ms 후에 타임아웃
})
.then(response => {
  console.log(response);
})
.catch(error => {
  console.log('Timeout or other error:', error);
});
const apiInstance = axios.create({
  baseURL: 'https://api.example.com/data/',
  timeout: 1000, // 모든 요청에 대해 1000ms 후 타임아웃
});
const handleButtonClick = async (sampleNumber) => {
  try {
    const response = await apiInstance.get(`sample0${sampleNumber}`);
    console.log(response);
  } catch (error) {
    console.log('Timeout or other error:', error);
  }
};
const api = axios.create({
  baseURL: 'https://api.example.com'
});
api.interceptors.request.use(
  config => {
    console.log('Request sent at:', new Date().toISOString());
    const token = localStorage.getItem('authToken');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    console.log('Request error:', error);
    return Promise.reject(error);
  }
);
api.interceptors.response.use(
  response => {
    console.log('Response received at:', new Date().toISOString());
    return response;
  },
  error => {
    if (error.response && error.response.status === 401) {
      console.log('Unauthorized access:', error);
    }
    return Promise.reject(error);
  }
);
export default api;
Reducers 역할:
extraReducers 역할:
const todosSlice = createSlice({
  name: 'todos',
  initialState,
  reducers: {
    // 동기적 액션 핸들러
    addTodo: (state, action) => {
      // 직접 상태를 업데이트
    },
  },
  extraReducers: {
    // 비동기 액션 핸들러
    [__getTodos.pending]: (state, action) => {
      // 로딩 상태 처리
    },
    [__getTodos.fulfilled]: (state, action) => {
      // 요청 성공 시 상태 처리
    },
    [__getTodos.rejected]: (state, action) => {
      // 에러 상태 처리
    },
  },
});
오늘의 한줄평 : 좀 더 자세하게 알수 있어서 유익했다. 남은 프로젝트도 열심히 잘 해야겠다.