zoukankan      html  css  js  c++  java
  • [Recompose] Create Stream Behaviors to Push Props in React Components with mapPropsStream

    Rather than using Components to push streams into other Components, mapPropsStream allows you to create functions that can wrap components to create shareable behaviors across components.

    Using componentFromStream:

    import React from "react"
    import { render } from "react-dom"
    import { Observable } from "rxjs"
    import config from "recompose/rxjsObservableConfig"
    import {
      setObservableConfig,
      componentFromStream,
      createEventHandler,
      mapPropsStream
    } from "recompose"
    
    setObservableConfig(config)
    //#endregion
    
    const Counter = props => <h1>{props.count}</h1>
    
    const CounterWithInterval = componentFromStream(
      props$ => props$.switchMap(
        props => Observable.interval(1000),
        (props, count) => ({count, ...props})
      )
      .map(Counter)
    )
    
    
    const App = () => (
      <div>
        <CounterWithInterval />
      </div>
    )
    
    render(<App />, document.getElementById("root"))

    MapPropsStream allows you to create functions that will decorate your component, rather than creating a component itself. I'm going to create an interval here using MapPropsStream.

    A mapProposStream version can be like this:

    import React from "react"
    import { render } from "react-dom"
    import { Observable } from "rxjs"
    import config from "recompose/rxjsObservableConfig"
    import {
      setObservableConfig,
      componentFromStream,
      createEventHandler,
      mapPropsStream
    } from "recompose"
    
    setObservableConfig(config)
    //#endregion
    
    const Counter = props => <h1>{props.count}</h1>
    
    const interval = mapPropsStream(props$ => props$.switchMap(
      props => Observable.interval(1000),
      (props, count) => ({ count, ...props })
    ))
    
    const CounterWithInterval = interval(Counter)
    
    
    const App = () => (
      <div>
        <CounterWithInterval />
      </div>
    )
    
    render(<App />, document.getElementById("root"))

    As you can see, we take the hightlighted part as own function, wrapped with 'mapPropsStream'. 

  • 相关阅读:
    PDA设备小知识--(IP)工业防护等级含义
    实施项目--如何推进项目实施进度
    Git.Framework 框架随手记--存储过程简化
    Git.Framework 框架随手记--SQL配置文件的使用
    Git.Framework 框架随手记--ORM查询数据集合 二
    介绍 Scratch 3.0:扩展编码创造力
    微服务架构:引领数字化转型的基石
    网易云技术开放日 云安全专场分享圆满结束
    JVM调优推荐
    springboot + mybatis + 多数据源
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8087464.html
Copyright © 2011-2022 走看看