经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » React » 查看文章
鍦?HTML 椤甸潰涓娇鐢?React鐨勫満鏅垎鏋恄HTML/Xhtml
来源:jb51  时间:2021/12/15 9:12:20  对本文有异议

璇ユ柟妗堜娇鐢ㄥ満鏅細鍦╤tml椤甸潰涓娇鐢╮eact锛屼富js鏂囦欢index.js鍜屽叾瀹冮潪react鍔熻兘浣跨敤js妯″潡鍖栫殑鏂瑰紡寮€鍙戯紝閫傚悎杞婚噺绾т腑灏忓瀷搴旂敤

index.html浠g爜锛?/p>

寮曞叆react銆乺eact-dom銆乥abel銆乵oment銆乤ntd绛?/p>

  1. <!DOCTYPE html>
  2. <html lang='zh-CN'>
  3.  
  4. <head>
  5. <title>React in HTML</title>
  6.  
  7. <meta charset="utf-8" />
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="viewport" content="width=device-width, initial-scale=1">
  10.  
  11. <link rel="stylesheet" href="libs/antd/antd.min.css">
  12. <link rel="stylesheet" href="css/index.css">
  13.  
  14. <style type="text/css">
  15.  
  16. </style>
  17.  
  18. <script type="text/javascript" src="libs/jquery-1.9.1.js"></script>
  19.  
  20. <script type="text/javascript" src="libs/react/react.production.min.js"></script>
  21. <script type="text/javascript" src="libs/react/react-dom.production.min.js"></script>
  22. <script type="text/javascript" src="libs/babel/babel.min.js"></script>
  23. <script type="text/javascript" src="libs/moment/moment-with-locales.min.js"></script>
  24. <script type="text/javascript" src="libs/antd/antd-with-locales.min.js"></script>
  25.  
  26. </head>
  27.  
  28. <body>
  29. <input id='btn' type="button" class="index-btn" value="鏄剧ずReact缁勪欢" />
  30.  
  31. <script type="text/babel" src="components/HelloReact.jsx"></script>
  32.  
  33. <script type="module" src="index.js"></script>
  34. </body>
  35.  
  36. </html>

index.js浠g爜锛?/p>

  1. import { ReactComponentContainer } from './ReactComponentContainer.js'
  2.  
  3. let isShow = true;
  4. let helloReactContainer;
  5.  
  6. $('#btn').on('click', function () {
  7. if (isShow) {
  8. helloReactContainer = new ReactComponentContainer('helloReact', HelloReact, { name: 'React' });
  9. helloReactContainer.show();
  10. isShow = false;
  11. $(this).val('闅愯棌React缁勪欢');
  12. } else {
  13. helloReactContainer.hide();
  14. isShow = true;
  15. $(this).val('鏄剧ずReact缁勪欢');
  16. }
  17. });

ReactComponentContainer.js浠g爜锛?/p>

璇ユā鍧楃敤浜庡湪html涓樉绀洪殣钘弐eact缁勪欢

  1. class ReactComponentContainer {
  2.  
  3. component
  4. componentProps
  5. componentContainerId
  6.  
  7. constructor(componentContainerId, component, componentProps) {
  8. if ($('#' + componentContainerId).length == 0) {
  9. $('body').append('<div id="' + componentContainerId + '"></div>');
  10. }
  11.  
  12. this.componentContainerId = componentContainerId;
  13. this.component = component;
  14. this.componentProps = componentProps;
  15. }
  16.  
  17. render(isShow) {
  18. ReactDOM.render(
  19. React.createElement(
  20. antd.ConfigProvider,
  21. {
  22. locale: antd.locales.zh_CN
  23. },
  24. React.createElement(this.component, Object.assign({ isShow: isShow }, this.componentProps))
  25. ),
  26. document.getElementById(this.componentContainerId)
  27. );
  28. }
  29.  
  30. show() {
  31. this.render(true);
  32. }
  33.  
  34. hide() {
  35. this.render(false);
  36. }
  37.  
  38. }
  39.  
  40. export { ReactComponentContainer }

HelloReact.jsx浠g爜锛?/p>

  1. class HelloReact extends React.Component {
  2. dateFormat = 'YYYY-MM-DD'
  3. timeFormat = 'HH:mm:ss'
  4.  
  5. constructor(props) {
  6. super(props);
  7.  
  8. let now = new Date().valueOf();
  9.  
  10. this.state = {
  11. dateStr: moment(now).format(this.dateFormat),
  12. timeStr: moment(now).format(this.timeFormat)
  13. }
  14.  
  15. this.onChangeDate = this.onChangeDate.bind(this);
  16. this.onChangeTime = this.onChangeTime.bind(this);
  17. this.updateDatePickerAndTimePicker = this.updateDatePickerAndTimePicker.bind(this);
  18. }
  19.  
  20. onChangeDate(date, dateString) {
  21. this.setState({ dateStr: dateString });
  22. }
  23.  
  24. onChangeTime(time, timeString) {
  25. this.setState({ timeStr: timeString });
  26. }
  27.  
  28. updateDatePickerAndTimePicker() {
  29. let now = new Date().valueOf();
  30. this.setState({
  31. dateStr: moment(now).format(this.dateFormat),
  32. timeStr: moment(now).format(this.timeFormat)
  33. });
  34. }
  35.  
  36. render() {
  37. return <div style={{ display: this.props.isShow ? '' : 'none' }}>
  38. <h1>Hello {this.props.name}, Now is {this.state.dateStr} {this.state.timeStr}</h1>
  39. <antd.DatePicker onChange={this.onChangeDate} value={moment(this.state.dateStr, this.dateFormat)} />
  40.  
  41. <antd.TimePicker onChange={this.onChangeTime} value={moment(this.state.timeStr, this.timeFormat)} />
  42. <br />
  43. <antd.Button type="primary" size="default" style={{ marginTop: '10px' }} onClick={this.updateDatePickerAndTimePicker} >鏇存柊鏃ユ湡鏃堕棿鎺т欢鍊?lt;/antd.Button>
  44. </div>;
  45. }
  46. }

鏁堟灉鍥撅細

娴忚鍣ㄦ寜F12寮瑰嚭DevTools锛屽湪Sources閫夐」鍗′腑鍙互鐪嬪埌缁勪欢浠g爜锛屾柟渚挎墦鏂偣璋冭瘯

閬囧埌鐨勯棶棰橈細

鏃犳硶浣跨敤es6鐨刬mport璇硶瀵煎叆react缁勪欢锛宔s6鐨刬mport鍜宺equire.js閮戒笉璁よ瘑jsx

react缁勪欢涓嶆槸鎸夐渶鍔犺浇锛屽彧閫傚悎灏忓瀷搴旂敤

Gitee浠g爜鍦板潃锛?/p>

https://gitee.com/s0611163/react-in-html

鍒版杩欑瘒鍏充簬鍦?HTML 椤甸潰涓娇鐢?React鐨勬枃绔犲氨浠嬬粛鍒拌繖浜?鏇村鐩稿叧html浣跨敤react鍐呭璇锋悳绱㈣剼鏈箣瀹朵互鍓嶇殑鏂囩珷鎴栫户缁祻瑙堜笅闈㈢殑鐩稿叧鏂囩珷锛屽笇鏈涘ぇ瀹朵互鍚庡澶氭敮鎸佽剼鏈箣瀹讹紒

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号