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

  • 相关阅读:
    linux的mount(挂载)NFS 共享,命令详解
    Ubuntu 14.04下NFS安装配置
    linux下实现ftp匿名用户的上传和下载文件功能
    ubuntu apache2配置详解(含虚拟主机配置方法)
    在Ubuntu Server下搭建LAMP环境
    RPM 命令
    阿里云主机ssh 免密码登录
    PHPMailer使用说明
    git的一些基础命令
    穿线
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8087464.html
Copyright © 2011-2022 走看看