16.条件渲染.html 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. // if - else - else-if
  17. // switch case
  18. // 三元运算符:表达式 ? '真':'假'
  19. function App() {
  20. return(
  21. <div>
  22. <ToHome />
  23. </div>
  24. )
  25. }
  26. // 登录
  27. // 逻辑:用户 => 首页 ; 非用户 => 登录页
  28. // function ToHome(username) {
  29. // console.log(username,'哈哈哈哈')
  30. // return username.user ? <h1>欢迎光临</h1> : <h1>go out</h1>
  31. // }
  32. // 登录
  33. // 逻辑:用户 => 首页 ; 非用户 => 登录页
  34. // 手动设置是不是用户通过本地存储
  35. function ToHome() {
  36. let token = JSON.parse(localStorage.getItem("token"));
  37. function handleLogin() {
  38. localStorage.setItem("token", JSON.stringify({
  39. use:"喜羊羊",
  40. age: 7
  41. }))
  42. token = JSON.parse(localStorage.getItem("token"))
  43. console.log(token,'最新的')
  44. }
  45. return token ? (
  46. <h1>你好</h1>
  47. ) : (
  48. <div>
  49. <button onClick={handleLogin}>请登录</button>
  50. </div>
  51. )
  52. }
  53. class GoHome extends React.Component {
  54. constructor() {
  55. super();
  56. this.state = {
  57. token:JSON.parse(localStorage.getItem("token")),
  58. main:{
  59. name:"小明",
  60. age: 20
  61. }
  62. }
  63. this.handleLogin = this.handleLogin.bind(this);
  64. }
  65. handleLogin() {
  66. localStorage.setItem("token", JSON.stringify(this.state.main))
  67. this.setState({
  68. token: JSON.parse(localStorage.getItem("token"))
  69. })
  70. }
  71. render() {
  72. let {token} = this.state;
  73. return token ? (
  74. <h1>已登录</h1>
  75. ) : (
  76. <div>
  77. <h1>请注册</h1>
  78. <button onClick={this.handleLogin}>你好,请登录</button>
  79. </div>
  80. )
  81. }
  82. }
  83. root.render(<App/>)
  84. </script>
  85. </body>
  86. </html>