このコンセプトと設定には新しくなっていますので、私のvageの説明は事前に申し訳ありません!Redux Sagaクラスジェネレーター
私は別のモジュール用に再利用可能なサガを作成しようとしています。私が持っている問題は、this
は、クラス内のジェネレータ関数の概念の外にあるようですので、私はこの関数が静的に呼び出されていると思っていますか?
どのように私はこの種の構造を達成することができますか?基本的に私がしたいのは、url変数を操作できる関数を呼び出すことで、configというオブジェクトはextendごとに変更します。私はPHPのバックグラウンドから来たので、抽象クラスを拡張するという考えがあります。
import Saga from './Saga';
import {effects} from 'redux-saga';
import * as config from './config';
class SalonSagas extends Saga {
generatePaginationUrl(action) {
return 'salons/';
}
}
export default function* saga()
{
const sagas = new SalonSagas(config);
effects.all([
effects.fork(sagas.paginationAsync),
]);
}
は、前の私は、この設定を使用する上記のクラスを使用して
export default class Saga {
config = {};
constructor(config) {
this.config = config;
}
* paginationAsync()
while(true) {
const action = yield effects.take(this.config.PAGINATION_ASYNC);
const url = yield effects.call(this.generatePaginationUrl, action);
//this.config = "Cannot read property 'config' of null"
//Continue with stuff here
}
}
}
。私は、このメソッドを使用したいすべてのインスタンスに対して、この関数をコピーして貼り付けることを避けようとしています。
function* pagintationAsnyc()
while(true) {
const action = yield effects.take(config.PAGINATION_ASYNC);
const auth = yield effects.select((state) => state.auth);
//generic action
const response = yield effects.call(api.get, '/salons', {'Authorisation': 'Bearer '+auth.token});
//do more generic actions I'm trying to prevent copying and pasting
}
}
おかげで私は行くことを与えなければならない私がしようとしました! 'effects.fork(paginationAsync(config))'そしてそれは失敗しましただから私はそのアイデアをあきらめて、サガ機能で何かをすることができるかもしれないとは思っていましたが、確信が持てませんでした!再度、感謝します! – sourRaspberri