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'. 

  • 相关阅读:
    两年工作感想
    ASP常用的38个内置函数
    asp汉字转换成汉语拼音
    js高级表格排序
    使用XmlHttpRequest对象调用Web Services 服务
    75个最佳Web设计资源
    C# FTP操作类
    存储过程操作类
    Windows Mobile 5.0 SDK 下载地址
    链表C#实现
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8087464.html
Copyright © 2011-2022 走看看