【问题标题】:React recompose componentFromStream update not triggersReact recompose componentFromStream 更新不触发
【发布时间】:2019-03-05 16:51:46
【问题描述】:

我有来自interval 的Rx Observable 和来自react prop 的另一个可观察对象,我确实与withLatestFrom 合并了两个Observables 以使用recompose 侦听更新和渲染流组件,它工作正常但问题是它没有更新当我将道具更改为localutc

您可以尝试增加间隔并尝试更改 LOCAL/UTC 按钮,它不会触发,但仅在时间更改时更新。

working demo with code

const locale$ = prop$.pipe(p => p)
  const timeInterval$ = prop$.pipe(
    switchMap(({intervalTime}) => interval(intervalTime)),
    withLatestFrom(locale$, (b, c) => {
    return c.locale === 'local' ? moment().format('HH:mm:ss') : moment().utc().format('HH:mm:ss')
  })//.pipe(map(p => p))
  )

【问题讨论】:

    标签: reactjs rxjs recompose


    【解决方案1】:

    您要查找的是 combineLatest(不是 withLatestFrom)。

    withLatestFrom

    将源与另一个可观察(或更多!)组合成一个可观察的发射数组,每个数组具有最新值,仅当源发射时

    结合最新

    将多个可观察对象组合成一个可观察对象,该可观察对象发出一个包含每个源的最新值的数组,每次这些可观察对象中的一个发出

    这是 combineLatest 的示例:

    const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now
    const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now
    const combinedTimers = combineLatest(firstTimer, secondTimer);
    combinedTimers.subscribe(value => console.log(value));
    // Logs
    // [0, 0] after 0.5s
    // [1, 0] after 1s
    // [1, 1] after 1.5s
    // [2, 1] after 2s
    

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 2017-10-13
      • 1970-01-01
      • 2018-10-28
      • 2021-10-17
      • 2018-02-05
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多