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

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

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

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

React.js

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

Q&A

解決済

1回答

4999閲覧

【React,js】検索したキーワードから検索結果を返す処理について⦅初心者⦆

hitominjar

総合スコア19

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2018/05/29 13:08

前提・実現したいこと

React.js、Javascript.js初心者です。
検索して、検索したキーワードを取得して、検索結果を返す。処理をしたいと思っております。
こちらの記事を参考に取り組んでいるのですが、うまく動きません。
https://mae.chab.in/archives/2860

そもそも全体的に違うような気もしています。。。
経験が少なすぎて、勘所が掴めていないので、どなたか助けていただければ助かります。。。

イメージ説明

該当のソースコード

▼フォームを表示するためのコンポーネント
- 子コンポーネントのonKeyUp={this._filterVal.bind(this)}から、入力されたキーワードを取得

  • nameにキーワードが含まれていればtrueを返す
  • handleSortByAscend()メソッドとhandleSortByDescend()メソッドを渡す
import React, { Component } from 'react'; import { render } from 'react-dom'; import StyleguideFrom from './StyleguideFilter'; /* Styleguide Application */ class Search extends React.Component { const line = this.props.textList.filter((item) => ( item.name.toLowerCase().indexOf(val) >= 0 )); this.setState({ textList: line }); } render() { return ( <div className="small-12 large-12 columns" id="header"> <div className="row head-nav" id="responsive-menu"ƒ> <div className="small-7 large-7 columns search-rap"> <StyleguideFrom onFilterVal={this.handleFilterVal.bind(this)} /> </div> </div> </div> ); } } export default Search;

▼フォームのキーワードを入力する部分のコンポーネント

import React, { Component } from 'react'; import { render } from 'react-dom'; /* Styleguide Application */ class StyleguideFrom extends React.Component { render() { return ( <div className="input-group" > <input type="text" ref="myinput" defaultValue="" onKeyUp={this._filterVal.bind(this)} className="form-control _keyword"/> <span className="input-group-btn"> <button className="btn btn-default _search" type="button"> <i className="fas fa-search"></i> </button> </span> </div> ); } } export default StyleguideFrom;

▼リストを作成するコンポーネント

  • 配列を作って、並べる。
import React, { Component } from 'react'; import { render } from 'react-dom'; class Items extends React.Component { render() { const textList = [ { image: 'images/sample1.png', name:'sumple A'}, { image: 'images/sample2.png', name:'sumple B'}, { image: 'images/sample3.png', name:'sumple C'}, { image: 'images/sample4.png', name:'sumple D'}, { image: 'images/sample5.png', name:'sumple E'}, ]; const renderitem = (text) => ( <div className="margin-bottom-4 small-6 medium-4 large-2 columns card-wrap"> <a className="itemLink" data-open="exampleModal1" href="StyleguideDetail.jsx"> <div className="radius bordered shadow card"> <img className="style-tmb-s" src={text.image}/> <div className="card-section"> <p>{text.name}</p> </div> </div> </a> </div> ); return ( <div className="row items-wrap"> {textList.map(renderitem)} </div> ); } } export default Items;

エラーコード

bundle.js:27372 Uncaught Error: Module build failed: SyntaxError: Unexpected token (10:8) 8 | class Search extends React.Component { 9 | > 10 | const StyleguideFrom = this.props.textList.filter((item) => ( | ^ 11 | item.name.toLowerCase().indexOf(val) >= 0 12 | )); 13 | this.setState({

StyleguideFromでなかったら、なんの値が入るのか、検討が付いておりません。。。
絶対に間違えた認識だと思うんですが、下記のコードに格納されるのかな、、と想像しておりました。。
<StyleguideFrom onFilterVal={this.handleFilterVal.bind(this)} />

補足情報(FW/ツールのバージョンなど)

CSS:foundation

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

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

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

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

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

guest

回答1

0

ベストアンサー

bundle.js:27372 Uncaught Error: Module build failed: SyntaxError: Unexpected token (10:8) 8 | class Search extends React.Component { 9 | > 10 | const StyleguideFrom = this.props.textList.filter((item) => ( | ^ 11 | item.name.toLowerCase().indexOf(val) >= 0 12 | )); 13 | this.setState({

エラーメッセージの通り、該当箇所で構文エラー(Syntax Error)が起きています。

一旦、既存のReactのコードからは離れて、まずはJavaScriptのClass定義の方法を復習し、Class定義の方法を理解した上で、Reactのコードに戻ることをお勧めします。

Class定義の方法を確認する際には実際に簡易的なコードを書いて実行し、動作確認をしながら理解を深めるようにすると良いかと思います。

jsbin.comのようなサイトを使うと直ぐにコードを書いて試せるのでお勧めです。

ちなみに、今回生じている構文エラーをReactを使わない簡易コードで再現すると、以下のようになります。JavaScriptもReact.jsもよく分かっていない状態で誰かの記事を参考にし、それをカスタマイズしようとしていると何がエラーの原因なのかも分からないかもしれませんが、実際のエラーはたったこれだけのコードの中で起きている訳です。

class Animal { // Syntax Error const id = 1; } class User { // Syntax Error this.name = 'foo'; }

https://jsbin.com/puyujupuku/1/edit?js,console

React.js、Javascript.js初心者です。

検索して、検索したキーワードを取得して、検索結果を返す。処理をしたいと思っております。
こちらの記事を参考に取り組んでいるのですが、うまく動きません。
https://mae.chab.in/archives/2860

これは仕事の一環でしょうか?それとも私的な学習でしょうか?
後者であれば、まずはJavaScriptの基本的な部分を抑えた上で、React.jsの学習に移行することをお勧め致します。前者であればJavaScript初心者の状態でReact.jsに挑むのは非効率だと思いますので、プロジェクトチームの人に相談した方が良さそうな気がします。

参考

※ その他、必要に応じてJavaScriptのclass定義について検索するなどして調べてみて下さい。

投稿2018/05/30 00:06

編集2018/05/30 01:34
HayatoKamono

総合スコア2415

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

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

hitominjar

2018/05/30 08:02

ありがとうございます!前者でした。チームの人に相談したのですが、「諦めないでー!できた方が自分の為になる」って言われてしまいました( ;∀;) >JavaScriptのClass定義の方法を復習し、Class定義の方法を理解した上で、Reactのコードに戻ることをお勧めします。 ありがとうございます!復習してみます!ありがとうございます><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問