Axios zwrócenie wartości zamiast promisa

Axios zwrócenie wartości zamiast promisa
Kawka
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 3 lata
  • Postów:24
0

Jak zamiast promisa mogę zwrócić wartość z funkcji. Mam taką funkcję

Kopiuj
export const getTodos = () => {
    return axios.get('tasks/tasks')
    .then(res => {
        console.log(res.data)
        return res.data
    })
    .catch(err => {
        console.error(err)
    })
}

W tym logu w czwartej linii dostaje dobrą odpowiedź z serwera listę 3 todos, ale jak wywołam tą funkcję w mojej akcji reduxowej, bądź gdziekolwiek indziej to zwraca ona promise i nie wiem jak wyciągnąc z niej wartośc zamiast promisa

Próbowałem tak getTodos().then(res => console.log(res)) i w ten sposób dostaje w konsoli moje todos, ale gdy zrobię coś takiego w mojej akcji reduxowej

Kopiuj
export const getAllTodos = () => ({
    type: 'GET_TODOS',
    todos: getTodos().then(res => res)
})

To w reducerze znowu otrzymuje promise

Kopiuj
const todos = (state = [], action) => {
    console.log(action.todos)
    switch(action.type) {
        case 'GET_TODOS':
            return [...state, action.todos]
        default:
            return state
    }
}

Link do loga z reducera Link

edytowany 7x, ostatnio: Kawka
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
0

Z promise jak z monadą IO. Jak wypakujesz promisa to tracisz większość zalet promise


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
SW
  • Rejestracja:około 5 lat
  • Ostatnio:5 miesięcy
  • Postów:250
3

Nie wypakujesz obiektu Promise w prosty sposób. Masz kilka wyjść. Możesz zrobić np. tak:

Kopiuj
export const getTodos = () => {
    return axios.get('tasks/tasks')
      .then(res => dispatch({ type: 'GET_TODOS', todos: res.data}))
      .catch(err => {
        console.error(err)
    })
}

Albo użyć Redux Thunk lub Redux Saga.

Kawka
Udało się tym sposobem, dziękuje

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.