首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此功能React组件更改为使用Recompose的组件?

如何将此功能React组件更改为使用Recompose的组件?
EN

Stack Overflow用户
提问于 2017-07-25 17:02:17
回答 1查看 143关注 0票数 0

我有以下功能组件,我有兴趣了解如何将其更改为branch增强组件,而不是if语句。

代码语言:javascript
复制
import React from 'react'
import PropTypes from 'prop-types'
import { Button, Icon, Label } from 'semantic-ui-react'
import { Link } from 'react-router-dom'
import { setPropTypes, branch } from 'recompose'

const LoginOrMiniProfile = ({presence}) => {
    if (presence.account) {
        return (
            <Link to='/profile'>
                <Label>
                    <Icon name='user circle outline' />
                    {presence.account.firstName}
                </Label>
            </Link>
        )
    } else {
        return (
            <div>
                <Button primary className={`login ${presence.loading && 'loading'}`}>Signup</Button>
                <Button className={`login ${presence.loading && 'loading'}`}>Login</Button>
            </div>
        )
    }
}

export default setPropTypes({
    prensence: PropTypes.object.isRequired
})(LoginOrMiniProfile)

对于奖励积分,如何使用Recompose来访问和更改Redux商店中的presence

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 17:59:18

这里有一个快速的例子来实现你想要的。你可以(也应该)做一些重构,比如在其他地方定义内联函数组件。

代码语言:javascript
复制
compose(
  connect(
    ({ presence }) => ({ presence }), // get presence from the redux store via `connect`
    {
      updatePresence: updatePresenceActionCreator // inject dispatch(updatePresence) to props
    }
  ),
  setPropTypes({
    prensence: PropTypes.object.isRequired,
    updatePresence: PropTypes.func.isRequired
  }),
  branch(
    ({ presence }) => presence.account,
    renderComponent(({ presence }) =>
      <Link to="/profile">
        <Label>
          <Icon name="user circle outline" />
          {presence.account.firstName}
        </Label>
      </Link>
    )
  )
)(({ 
  presence,
  updatePresence // you can update your presence by invoking this function
}) =>
  <div>
    <Button primary className={`login ${presence.loading && "loading"}`}>
      Signup
    </Button>
    <Button className={`login ${presence.loading && "loading"}`}>Login</Button>
  </div>
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45298598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档