te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Render Props vs HOC? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Render Props vs HOC? - Stack Overflow

programmeradmin3浏览0评论

I'm trying to learn React from scratch and having a deep knowledge of concepts !

Today I was searching about HOC, Render Props and the differences between the two. I've checked render times for both. I wrote a console.log('rendered') into render to check render times in browser console.

HOC: When I used HOC to write an usable ponent, I saw after each changes on props I've render for HOC and ponent that used HOC.

Render Prop: In this case I've changed the props, but only wrapper ponent has rendered. because with render props we load only one ponent and inject codes to use that ponent feature !

So, Is it a benefit to use Render Props instead HOC ponents? Or HOC ponents are usable and powerful yet?

Thanks

I'm trying to learn React from scratch and having a deep knowledge of concepts !

Today I was searching about HOC, Render Props and the differences between the two. I've checked render times for both. I wrote a console.log('rendered') into render to check render times in browser console.

HOC: When I used HOC to write an usable ponent, I saw after each changes on props I've render for HOC and ponent that used HOC.

Render Prop: In this case I've changed the props, but only wrapper ponent has rendered. because with render props we load only one ponent and inject codes to use that ponent feature !

So, Is it a benefit to use Render Props instead HOC ponents? Or HOC ponents are usable and powerful yet?

Thanks

Share Improve this question edited Jun 15, 2020 at 12:20 Dupocas 21.3k7 gold badges41 silver badges57 bronze badges asked Nov 14, 2019 at 11:29 MohammadMohammad 2332 silver badges10 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 14

HOC, Render Props and now hooks all serve to the same purpose: Share stateful logic between ponents. There is actually no way to tell which one is better or worst. All depends on your use case.


High Order Components are posable. It's easy to nest them

const withProps = (Component) => connect(mapState, mapDispatch)(<Component foo='bar' />)

Children as a function is a bad pattern for posability, nesting looks a lot like a callback hell cause they need to be executed inside an jsx block

const Component = () => {
  return (
    <Consumer>
      {
        props => (
          <ThemeConsumer>
            {
              theme => <Child {...props} {...theme} />
            }
          </ThemeConsumer>              
        )                  
      }
    </Consumer>
  )
}

On the other hand, render props it's easy to set up, have less boilerplate and in most cases are easier to reason about.


Hooks bring the best of both worlds

hooks are posable, can be easily nested, and are simple to reason about cause after all they're just plain old functions

const useConfig = () =>{
  const customProps = useCustomProps()
  const theme = useContext(ThemeContext)

  return [customProps, theme]
}

const Component = () => {
  const [props, theme] = useConfig()
}

But again: There is no such thing as the best pattern. It's just a matter of where are you going to use it.

发布评论

评论列表(0)

  1. 暂无评论