将之前项目的组件替换为React来实现
第16周的课程里面完成的那个慕云游商城项目,如果我想把里面的部分组件替换成React方式来实现的话可行吗?就是项目整体不变,可以直接引用封装好的React组件吗?
就比如说那个PC端项目里面封装了loading公共组件,我该怎么样把这个loading组件改写成react类组件或者函数式组件的样式,然后给其他的各个组件使用呢?
以机酒自由行那个版块为例,原来的代码是这样
机酒自由行代码:
<div class="hd clearfix"> <h2>机酒自由行</h2> <em>挑选全球机票、酒店、邮轮等旅行产品</em> <nav> <ul> <li class="current"><a href="">近期好货</a></li> <li><a href="">新品汇聚</a></li> <li><a href="">定制游</a></li> <li><a href="">国内推荐</a></li> <li><a href="">优惠机票</a></li> <li><a href="">热门海岛</a></li> <li><a href="">热卖签证</a></li> </ul> </nav> </div> <div class="bd clearfix"> <% include ('../../../../components/loading/loading.art',{ inline:true, text:'ZSY拼命加载中...' }) %> </div>
loading组件代码:
<div class="loading {{inline?'loading-inline':''}}"> <div class="loading-indicator"> <img src="./loading.gif" alt="loading"> </div> <div class="loading-text">{{text?text:'加载中...'}}</div> </div>
19
收起
正在回答
2回答
同学你好,可以用html文件同时引入art-template以及react,例如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://unpkg.com/art-template@4.13.2/lib/template-web.js"></script> <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script> </head> <body> <!-- art-template --> <div id="tel"></div> <script id="tpl-user" type="text/html"> {{if user}} <h2>{{user.name}}</h2> {{/if}} </script> <!-- react --> <div id="like_button_container"></div> <script> // art-template document.getElementById("tel").innerHTML = template("tpl-user", { user: { name: "xxx" } }) // react const e = React.createElement; class LikeButton extends React.Component { constructor(props) { super(props); this.state = { liked: false }; } render() { // 如果liked为true,返回字符串替换按钮 if (this.state.liked) { return 'You liked this.'; } // 返回创建的button按钮 return e( 'button', { onClick: () => this.setState({ liked: true }) }, 'Like' ); } } const domContainer = document.querySelector('#like_button_container'); ReactDOM.render(e(LikeButton), domContainer); </script> </body> </html>
自己测试下。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星