16.条件渲染.html 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. <script src="./babel.min.js"></script>
  8. <script src="./react.development.js"></script>
  9. <script src="./react-dom.development.js"></script>
  10. </head>
  11. <body>
  12. <div id="root"></div>
  13. <script type="text/babel">
  14. const root = ReactDOM.createRoot(document.getElementById("root"));
  15. /**
  16. * 条件判断:
  17. * if/else/else-if
  18. * switch-case
  19. * 三元判断
  20. */
  21. function App() {
  22. return (
  23. <div>
  24. <News />
  25. </div>
  26. )
  27. }
  28. class News extends React.Component {
  29. constructor() {
  30. super();
  31. this.state = {
  32. msg: {
  33. user: "图图",
  34. age: 3
  35. },
  36. token: JSON.parse(localStorage.getItem("token"))
  37. }
  38. }
  39. handleLogin() {
  40. localStorage.setItem('token',JSON.stringify('haha'));
  41. this.setState({
  42. token:'haha'
  43. })
  44. }
  45. render() {
  46. let { token, msg } = this.state;
  47. console.log(token, msg)
  48. // 逻辑: 如果存在 token 显示已登录; 不存在 显示 请登录
  49. // if (token) {
  50. // return (
  51. // <div>
  52. // 已登录
  53. // </div>
  54. // )
  55. // } else {
  56. // return (
  57. // <div>
  58. // 请登录
  59. // </div>
  60. // )
  61. // }
  62. return token ? (
  63. <h1>已登录</h1>
  64. ) : (
  65. <div>
  66. <h2>请登录</h2>
  67. <button onClick={this.handleLogin.bind(this)}>请登录</button>
  68. </div>
  69. )
  70. }
  71. }
  72. root.render(<App />);
  73. </script>
  74. </body>
  75. </html>