私はImmutableオブジェクトを使ってReact-Reduxアプリケーションを構築しています。私はAPIエンドポイントから取得したデータで状態を更新する必要があります。私はアイデアは私がフェッチデータはここ不変のデータを更新し、Javascriptで約束を返す
が私のコードであるデータオブジェクト内のそれぞれのティッカー・キーに入るということです
const state = fromJS({
tickers: ['AAPL', 'TSLA', 'GOOGL'],
data: {
AAPL: Map(),
TSLA: Map(),
GOOGL: Map()
}
});
データに追加する前に、ここで
は私の状態構造でありますデータを取得して更新してみてください
export function requestAPIData(state, tickerArray){
return dispatch => {
return yahooFinance.historical({
symbols: tickerArray,
from: '2012-01-01',
to: '2012-01-05',
period: 'd'
}, (err, quotes) => {
throw new Error('err');
}).then(result => {
addDataToKeysFunction(state, result);
}).then(() => {
console.log(state);
dispatch(success());
})
}
}
function addDataToKeysFunction(state, data){
return new Promise ((resolve, reject) => {
for(let key in data){
console.log(data[key]);
state.setIn(['data', key], data[key]);
}
resolve();
})
}
ここで私は混乱しています。状態オブジェクトに対してstate.setInを呼び出すだけでは、状態(?)を返さない限り、不変オブジェクトは更新されないため、一時的に更新されます。しかし、私はまた、解決される必要がある、または拒絶される必要がある約束を返す。状態が更新され、約束が解決されるようにするにはどうすればよいですか。
私は不変のデータ構造を扱うのが比較的新しいので、不明な点がある場合は、それを指摘してください。また、コールバックを使用してこれを行うための唯一の方法である場合、それも同様です。
redux.jsで見つかった無料の[Getting Started with Redux](https://egghead.io/courses/getting-started-with-redux)の動画を見るのに1時間を投資することを強くお勧めします。 .org(Reduxの作成者が作成)。不変状態を直接に変更するのではなく、どのように減らすべきかを考えるのに役立ちます。 – jehna1
@ jehna1 - ねえ、私はそれらのビデオを見てきました、そして、私はそれらを愛しました。私はImmutable JSを使い始めることを主な理由としています。なぜなら、還元型アプリケーションデータの処理がずっと簡単になるからです。しかし、彼らはImmutable JS自体に関する情報を持っておらず、ImmutableのTypeScriptドキュメントも役に立ちません。 –
還元剤を使って状態を変えることについて話しているものに再訪することをお勧めします。 – jehna1