質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1081閲覧

Reactでfunction component化すると機能が使えなくなる

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/03/22 07:08

Reactのチュートリアルに沿ってローカルで三目並べを作成しています.
function componentの章までは問題無くできていたのですが,Squareクラスをfunction componentにするとタイルをクリックしてもXが書き込まれないようになってしまいます.function componentを使わずにクラスのままの場合は期待通りの挙動を示しております.

私の環境は以下の通りです.

  • OSX 10.14.3
  • node js 11.12.0
  • Vivaldi 2.3.1440.61 / Safari 12.0.3 / Google Chrome 73.0.3683.86

以下が編集中のindex.jsです.

js

1import React from 'react'; 2import ReactDOM from 'react-dom'; 3import './index.css'; 4 5// class Square extends React.Component { 6// render() { 7// return ( 8// <button 9// className="square" 10// onClick = {() => this.props.onClick()} 11// > 12// {this.props.value} 13// </button> 14// ); 15// } 16// } 17 18function Square(props){ 19 return ( 20 <button className="square" onClick={props.onClick}> 21 {props.Value} 22 </button> 23 ); 24} 25 26class Board extends React.Component { 27 constructor(props){ 28 super(props); 29 this.state = { 30 squares: Array(9).fill(null), 31 }; 32 } 33 34 handleClick(i){ 35 const squares = this.state.squares.slice(); 36 squares[i] = 'X'; 37 this.setState({squares: squares}); 38 } 39 40 renderSquare(i) { 41 return ( 42 <Square 43 value = {this.state.squares[i]} 44 onClick = {() => this.handleClick(i)} 45 /> 46 ); 47 } 48 49 render() { 50 const status = 'Next player: X'; 51 52 return ( 53 <div> 54 <div className="status">{status}</div> 55 <div className="board-row"> 56 {this.renderSquare(0)} 57 {this.renderSquare(1)} 58 {this.renderSquare(2)} 59 </div> 60 <div className="board-row"> 61 {this.renderSquare(3)} 62 {this.renderSquare(4)} 63 {this.renderSquare(5)} 64 </div> 65 <div className="board-row"> 66 {this.renderSquare(6)} 67 {this.renderSquare(7)} 68 {this.renderSquare(8)} 69 </div> 70 </div> 71 ); 72 } 73} 74 75class Game extends React.Component { 76 render() { 77 return ( 78 <div className="game"> 79 <div className="game-board"> 80 <Board /> 81 </div> 82 <div className="game-info"> 83 <div>{/* status */}</div> 84 <ol>{/* TODO */}</ol> 85 </div> 86 </div> 87 ); 88 } 89} 90 91// ======================================== 92 93ReactDOM.render( 94 <Game />, 95 document.getElementById('root') 96); 97

どこかに間違いがありますでしょうか?もしくはバージョンアップによる仕様変更などがありましたでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

jsx

1function Square(props){ 2 return ( 3 <button className="square" onClick={props.onClick}> 4 {props.value /* Value→value */} 5 </button> 6 ); 7}

投稿2019/03/22 07:18

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/22 07:45

ご指摘ありがとうございます. とんでもなく恥ずかしいミスでした・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問