16.条件渲染.html 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Document</title>
  7. <!-- jsx 语法浏览器不识别 jsx => js 浏览器可识别的语言 -->
  8. <script src="./babel.min.js"></script>
  9. <!-- react的核心库 -->
  10. <script src="./react.development.js"></script>
  11. <!-- 解析react中的dom库 -->
  12. <script src="./react-dom.development.js"></script>
  13. </head>
  14. <body>
  15. <div id="root"></div>
  16. <script type="text/babel">
  17. let root = ReactDOM.createRoot(document.getElementById("root"));
  18. /**
  19. * 条件判断:
  20. * if/else/else-if
  21. * switch-case
  22. * 三元判断
  23. */
  24. function App() {
  25. return <News />;
  26. }
  27. /**
  28. * 登录逻辑
  29. * 逻辑:用户 => 首页 ; 非用户 => 登录页
  30. * 本地存储
  31. *
  32. * 类组件与函数组件 分别实现
  33. */
  34. class News extends React.Component {
  35. constructor() {
  36. super();
  37. this.state = {
  38. token: JSON.parse(localStorage.getItem("token")),
  39. msg: {
  40. user: "小小",
  41. name: 10,
  42. },
  43. };
  44. }
  45. render() {
  46. let { token } = this.state;
  47. // return (
  48. // <div>
  49. // if(token) {
  50. // <h1>已登录</h1>
  51. // } else {
  52. // <div>
  53. // <h2>未登录</h2>
  54. // <button>请登录</button>
  55. // </div>
  56. // }
  57. // </div>
  58. // )
  59. // return token ? (
  60. // <h1>已登录</h1>
  61. // ) : (
  62. // <div>
  63. // <h2>未登录</h2>
  64. // <button>请登录</button>
  65. // </div>
  66. // );
  67. if (token) {
  68. return <div>已登录</div>;
  69. } else {
  70. return (
  71. <div>
  72. <h2>未登录</h2>
  73. {/*点击请登录 存储token并跳转登录成功页面*/}
  74. <button>请登录</button>
  75. </div>
  76. );
  77. }
  78. }
  79. }
  80. root.render(<App />);
  81. </script>
  82. </body>
  83. </html>