特定の段階でアクションをレデューサーにディスパッチしようとしていますが、動作していないようです。 showGeo()関数は、コンポーネントがマウントされたときに起動されます。コンソールに表示されるのは空の配列で、デフォルトの状態です。私はディスパッチでリターンブロック内のコードをラップしようとしましたが、どちらも動作しません。私は初心者ですので、どんな助けもありがとうございます。ここで私はアクションをディスパッチしようとしていますが、登録していないようです
export const sendAction = (user) => {
return (dispatch) => {
dispatch({ type: GEO_SUCCESS, payload: user });
};
};
export const showGeo =() => {
const firebaseRef = firebase.database().ref('/geofire');
const geoFire = new geofire(firebaseRef);
let user;
const geoQuery = geoFire.query({
center: [37.78, -122.4],
radius: 10 //kilometers
});
geoQuery.on("key_entered", function(key, location, distance) {
console.log("Bicycle shop " + key + " found at " + location + " (" + distance + " km away)");
firebase.database().ref('/users/' + key).once('value').then(function(snapshot) {
console.log(snapshot.val());
user = snapshot.val();
sendAction(user);
});
});
};
は減速ファイルです:
import {
GEO_SUCCESS
} from '../actions/types';
export default (state = [], action) => {
switch (action.type) {
case GEO_SUCCESS:
return action.payload;
default:
return state;
}
};
こんにちは、私はsendActionによってアクセス可能なグローバル変数であることを忘れていました。私はとにかくあなたの提案を試みます。ありがとう – moe
好奇心が強い....それはグローバル変数の理由はありますか?あなたはreduxを使用しており、その中にユーザーを含めるためのアクションをディスパッチしています。 –
本当の理由はありませんが、提案したようにコードをパラメータとして提供するようにコードを変更しましたが、まだアクションはユーザーの状態を更新していません。 – moe