为了账号安全,请及时绑定邮箱和手机立即绑定

React 高阶组件逻辑加载子组件

React 高阶组件逻辑加载子组件

智慧大石 2018-08-11 13:30:43
一个选项卡,分别三项内容,我把三项内容分为三个组件,另外配置一个高阶组件用于逻辑加载组件,如图:三个li里分别是选项列表,外部引入内容组件,Compon是引入的内容组件分别有三个,我想问的是在高阶组件中,怎样去加载引入的不同组件呢?  就在code-loaderBox里,我的想法是建立一个属性,然后通过点击li时的逻辑 把组件赋给这个属性,最后在div中只写那个属性就ok了,请问这种方法可行吗?或者说有没有更简便的方式;
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

最简单最直接的办法,利用一个条件来决定是否渲染组件,通过更改这个条件来实现切换局部组件的渲染与取消。
伪代码:

let com;if(true){
   com=<Component/>}else{
   com=null}
使用

{com}

算是最简单的办法了吧


查看完整回答
反对 回复 2018-08-30
?
富国沪深

TA贡献1790条经验 获得超9个赞

谢邀~

首先我没太读懂你是想做什么, 我的理解是当你点击li, 切换下方的code-loaderBox去显示不同的组件?

其次, 看到你的代码我提几个意见, 仅供参考.

  1. 不使用jquery, 用state去保存状态

  2. li可以使用一个数组对象去封装好参数, 这样传参也比较方便, render之前可以动态生成一个list

const list;
list = 数组.map(function(o, i, objs){ 
   return <li onclick={this.onClick(i))} key={i} >{o.name}</li>
  });

return中

<ul>
    {list}
</ul>

onClick中

    onClick(i){        
          //传入的参数, 可以为任意含义的参数, 但必须唯一
        //根据不同情况去
        var status = 某种情况;        
        this.setState({status: status});
    }

code-loaderBox中动态显示某些组件

<div>
   this.state.status == 某种情况 ? <某种情况下的组件 /> : null
   this.state.status == 某种情况 ? <某种情况下的组件 /> : null
   this.state.status == 某种情况 ? <某种情况下的组件 /> : null
   ...
   //多个的话也可以写一个switch
</div>


查看完整回答
反对 回复 2018-08-30
  • 2 回答
  • 0 关注
  • 1070 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信