Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно получить и присвоить данные полученные из сервера Axios, react-redux (https://javascript.ru/forum/misc/67773-kak-pravilno-poluchit-i-prisvoit-dannye-poluchennye-iz-servera-axios-react-redux.html)

hambat 07.03.2017 11:23

Как правильно получить и присвоить данные полученные из сервера Axios, react-redux
 
Всем привет!
С помощью axios пытаюсь получить данные и записать в const initialState, помогите пожалуйста как правильно это сделать..
спасибо!

можно ли как то вне блока then это сделать?
если внутри then, то как правильно экспортировать tracks ?

import axios from 'axios';


axios.get('http://ellenflare.com/loads/json')
.then(function (res) {

console.log(res.data)

});

const initialState = [
{
id: 1,
name: 'Enter Sandman'
},
{
id: 2,
name: 'The weekend'
}
];

export default function tracks(state = initialState, action) {

if (action.type === 'ADD_TRACK') {
return [
...state,
action.payload
];
} else if (action.type === 'FETCH_TRACKS_SUCCESS') {
return action.payload;
}
return state;
}

destus 07.03.2017 12:18

hambat,
ну вообще обычно генерирует действие, например FETCH_TRACKS, когда запрос завершился генерируют ещё одно действие, например FETCH_TRACK_SUCCESS, и reducer изменяет твоё состояние. Для асинхронных действий redux-thunk посмотри. И не пиши if () {} else if () {}. Используй switch.

hambat 07.03.2017 14:14

Спасибо destus.

axios.get('http://ellenflare.com/loads/json')
.then(function (res) {

console.log(res.data)

});

const initialState = [
{
id: 1,
name: 'Enter Sandman'
},
{
id: 2,
name: 'The weekend'
}
];

Cуть вопроса в другом
Как я могу записать полученные данные с res во внешнюю константу initialState ?

destus 07.03.2017 15:30

hambat,
да не должно быть такого. Только reducer может менять твоё состояние. Это ж осоновы Redux, не изобретай костылей.

hambat 07.03.2017 16:29

это и есть reducer

destus 07.03.2017 17:09

hambat,
Тогда я не понимаю что не так в посте 2.


Часовой пояс GMT +3, время: 22:17.