From abc8bb6087d9eeffc9e176ba15c6e1ccae067216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= Date: Tue, 16 Feb 2021 18:44:36 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E7=AE=80=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E4=BB=BF=E5=A4=B4=E6=9D=A1=E7=BD=91=E7=AB=99=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/header.js | 27 ++++++++ src/index.css | 63 ++++++----------- src/index.js | 159 ++---------------------------------------- 井字格demo/index.css | 58 ++++++++++++++++ 井字格demo/index.js | 162 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 274 insertions(+), 195 deletions(-) create mode 100644 src/header.js create mode 100644 井字格demo/index.css create mode 100644 井字格demo/index.js diff --git a/src/header.js b/src/header.js new file mode 100644 index 0000000..a407811 --- /dev/null +++ b/src/header.js @@ -0,0 +1,27 @@ +/** + * Web唐明明 + * 匆匆数载恍如梦,岁月迢迢华发增。 + * 碌碌无为枉半生,一朝惊醒万事空。 + * ComponentName: '头部' + */ + +import React from "react" + +class Header extends React.Component{ + render () { + return( +
+
+ 下载APP + 注册头条号 +
+
+ 侵权投诉 + 头条产品 +
+
+ ) + } +} + +export default Header diff --git a/src/index.css b/src/index.css index 7b78493..1915eb0 100644 --- a/src/index.css +++ b/src/index.css @@ -6,53 +6,32 @@ */ body { - font: 14px "Century Gothic", Futura, sans-serif; - margin: 20px; -} - -ol, ul { - padding-left: 30px; -} - -.board-row:after { - clear: both; - content: ""; - display: table; -} - -.status { - margin-bottom: 10px; -} - -.square { - background: #fff; - border: 1px solid #999; - float: left; - font-size: 24px; - font-weight: bold; - line-height: 34px; - height: 34px; - margin-right: -1px; - margin-top: -1px; + font-size: 14px; + margin: 0; padding: 0; - text-align: center; - width: 34px; } -.square:focus { - outline: none; -} - -.kbd-navigation .square:focus { - background: #ddd; -} - -.game { +.header{ + background: #222; + color: white; + height: 34px; + line-height: 34px; display: flex; - flex-direction: row; + justify-content: space-between; } -.game-info { - margin-left: 20px; +.header span, +.header a{ + padding: 0 10px; + display: inline-block; + color: white; + text-decoration: none; } +.header-app{ + border-right: solid 1px #3a3a3a; +} + +.header-product{ + border-left: solid 1px #3a3a3a; +} diff --git a/src/index.js b/src/index.js index 7241e74..1f2de3c 100644 --- a/src/index.js +++ b/src/index.js @@ -2,161 +2,14 @@ * Web唐明明 * 匆匆数载恍如梦,岁月迢迢华发增。 * 碌碌无为枉半生,一朝惊醒万事空。 - * ComponentName: '官方demo - 组件之间的传参' */ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; - -// 类组件 -// class Square extends React.Component { -// // 入口函数 -// render() { -// return ( -// -// ); -// } -// } - -// 函数组件 -const Square = (props) => { - return ( - - ) -} - -class Board extends React.Component { - // 小方格方法 - renderSquare(i) { - return this.props.onBoard(i)} - />; - } - render() { - return ( -
-
- {this.renderSquare(0)} - {this.renderSquare(1)} - {this.renderSquare(2)} -
-
- {this.renderSquare(3)} - {this.renderSquare(4)} - {this.renderSquare(5)} -
-
- {this.renderSquare(6)} - {this.renderSquare(7)} - {this.renderSquare(8)} -
-
- ); - } -} - -class Game extends React.Component { - constructor (props) { - super(props) - this.state = { - history: [{ - squares: Array(9).fill(null) - }], - xIsNext: true, - stepIndex: 0 - } - } - // 定一个一个组件方法 - handleClick(i) { - const history = this.state.history.slice(0, this.state.stepIndex + 1) - const current = history[history.length - 1] - const squares = current.squares.slice() - if(calculateWinner(squares) || squares[i]){ - return - } - squares[i] = this.state.xInNext ? 'X': 'O' - this.setState({ - history: history.concat([{ squares }]), - xInNext: !this.state.xInNext, - stepIndex: history.length - }) - // Array.slice()返回数组选定的元素,相当于克隆了原有数组 - } - jumpTo(index){ - this.setState({ - stepIndex: index, - xIsNext: (index % 2) === 0, - }) - } - render() { - const history = this.state.history - const current = history[this.state.stepIndex] - const winner = calculateWinner(current.squares) - const moves = history.map((stepArr, index) => { - const desc = index ? '下一步' + index : '开始游戏' - return( -
  • - -
  • - ) - }) - let status; - if(winner){ - status = '恭喜选手' + winner + '获胜~' - }else{ - status = '下一位选手: ' + (this.state.xInNext ? 'X': 'O'); - } - return ( -
    -
    - this.handleClick(i)} - /> -
    -
    -
    {status}
    -
      {moves}
    -
    -
    - ); - } -} - -function calculateWinner(squares) { - const lines = [ - [0, 1, 2], - [3, 4, 5], - [6, 7, 8], - [0, 3, 6], - [1, 4, 7], - [2, 5, 8], - [0, 4, 8], - [2, 4, 6], - ]; - for (let i = 0; i < lines.length; i++) { - const [a, b, c] = lines[i]; - if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) { - return squares[a]; - } - } - return null; -} +import React from "react" +import ReactDOM from 'react-dom' +import Header from "./header" +import './index.css' ReactDOM.render( - , +
    , document.getElementById('root') -); - +) diff --git a/井字格demo/index.css b/井字格demo/index.css new file mode 100644 index 0000000..7b78493 --- /dev/null +++ b/井字格demo/index.css @@ -0,0 +1,58 @@ + +/** + * Web唐明明 + * 匆匆数载恍如梦,岁月迢迢华发增。 + * 碌碌无为枉半生,一朝惊醒万事空。 + */ + +body { + font: 14px "Century Gothic", Futura, sans-serif; + margin: 20px; +} + +ol, ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ""; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; +} + +.kbd-navigation .square:focus { + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; +} + diff --git a/井字格demo/index.js b/井字格demo/index.js new file mode 100644 index 0000000..7241e74 --- /dev/null +++ b/井字格demo/index.js @@ -0,0 +1,162 @@ +/** + * Web唐明明 + * 匆匆数载恍如梦,岁月迢迢华发增。 + * 碌碌无为枉半生,一朝惊醒万事空。 + * ComponentName: '官方demo - 组件之间的传参' + */ + +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; + +// 类组件 +// class Square extends React.Component { +// // 入口函数 +// render() { +// return ( +// +// ); +// } +// } + +// 函数组件 +const Square = (props) => { + return ( + + ) +} + +class Board extends React.Component { + // 小方格方法 + renderSquare(i) { + return this.props.onBoard(i)} + />; + } + render() { + return ( +
    +
    + {this.renderSquare(0)} + {this.renderSquare(1)} + {this.renderSquare(2)} +
    +
    + {this.renderSquare(3)} + {this.renderSquare(4)} + {this.renderSquare(5)} +
    +
    + {this.renderSquare(6)} + {this.renderSquare(7)} + {this.renderSquare(8)} +
    +
    + ); + } +} + +class Game extends React.Component { + constructor (props) { + super(props) + this.state = { + history: [{ + squares: Array(9).fill(null) + }], + xIsNext: true, + stepIndex: 0 + } + } + // 定一个一个组件方法 + handleClick(i) { + const history = this.state.history.slice(0, this.state.stepIndex + 1) + const current = history[history.length - 1] + const squares = current.squares.slice() + if(calculateWinner(squares) || squares[i]){ + return + } + squares[i] = this.state.xInNext ? 'X': 'O' + this.setState({ + history: history.concat([{ squares }]), + xInNext: !this.state.xInNext, + stepIndex: history.length + }) + // Array.slice()返回数组选定的元素,相当于克隆了原有数组 + } + jumpTo(index){ + this.setState({ + stepIndex: index, + xIsNext: (index % 2) === 0, + }) + } + render() { + const history = this.state.history + const current = history[this.state.stepIndex] + const winner = calculateWinner(current.squares) + const moves = history.map((stepArr, index) => { + const desc = index ? '下一步' + index : '开始游戏' + return( +
  • + +
  • + ) + }) + let status; + if(winner){ + status = '恭喜选手' + winner + '获胜~' + }else{ + status = '下一位选手: ' + (this.state.xInNext ? 'X': 'O'); + } + return ( +
    +
    + this.handleClick(i)} + /> +
    +
    +
    {status}
    +
      {moves}
    +
    +
    + ); + } +} + +function calculateWinner(squares) { + const lines = [ + [0, 1, 2], + [3, 4, 5], + [6, 7, 8], + [0, 3, 6], + [1, 4, 7], + [2, 5, 8], + [0, 4, 8], + [2, 4, 6], + ]; + for (let i = 0; i < lines.length; i++) { + const [a, b, c] = lines[i]; + if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) { + return squares[a]; + } + } + return null; +} + +ReactDOM.render( + , + document.getElementById('root') +); +