मैं ipcRenderer ईवेंट प्रारंभ करने के लिए rxjs के टैप ऑपरेटर के साथ redux-अवलोकन योग्य का उपयोग कर रहा हूं। इससे पहले मैं एक और कार्रवाई भेजना चाहता हूं। सवाल यह है कि टैप ऑपरेटर को पेलोड को उचित तरीके से कैसे पास किया जाए? -

नोट: मैं अनुक्रम के अंत में टैप ऑपरेटर रखना चाहता हूं

मैंने इसे एक्शन के पेलोड में पास करने की कोशिश की है लेकिन यह वह नहीं है जो मैं चाहता हूं .. उदाहरण देखें

import { ipcRenderer } from 'electron';
import { map, tap, ignoreElements } from 'rxjs/operators';
import { ofType } from 'redux-observable';
import { pipe } from 'rxjs';

import { togglePackageLoader } from 'models/ui/actions'
import { viewPackageStart} from '../actions';

// I want to pass payload to tap
/* togglePackageLoader returns {  
  type: 'TOGGLE_LOADER',
  payload: {
    loading: true,
    options: {
      opt1: value1,
    }
  }
}

// i want to avoid passing options to toggleLoader payload..
*/
const viewPackageEpic = pipe(
    ofType(viewPackageStart.type),
    map(({ payload }) => togglePackageLoader({
        loading: true,
        options: payload
    })),
    tap(({ payload: { options } }) => {
        ipcRenderer.send('npm-view', options)
    }),
    ignoreElements()
);

export { viewPackageEpic };

मुझे पहले टॉगल लोडर भेजने की उम्मीद थी, फिर आईपीसी रेंडरर कॉल करें

0
rvpanoz 2 मई 2019, 23:24

1 उत्तर

सबसे बढ़िया उत्तर

मुझे एक समाधान मिला जो मेरी आवश्यकताओं के अनुरूप है। मैंने एक और महाकाव्य बनाया जो उसी प्रकार को पकड़ता है। टैप ऑपरेटर के बाद इग्नोर एलिमेंट्स का उपयोग करना।

const viewPackageEpic = pipe(
    ofType(viewPackageStart.type),
    map(() => updatePackageLoader({
        loading: true
    })),
);

const viewPackageLoaderEpic = pipe(
    ofType(viewPackageStart.type),
    tap(({ payload: { options } }) => {
        ipcRenderer.send('npm-view', options)
    }),
    ignoreElements()
);
0
rvpanoz 3 मई 2019, 21:28