将之前项目的组件替换为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 星