前提・実現したいこと
現在Reactの勉強をしています。
flux-utilを使ってみようと思い、以下のコードを参考にして実行したところエラーになりました。
TypeError: Class constructor FormApp cannot be invoked without 'new'
解決方法が知りたいです。もしわかる方がいればよろしくお願いいたします。
コードは以下です
https://github.com/k49977/flux-app
▼index.js
js
1// @ts-nocheck 2import React, { Component } from 'react'; 3import ReactDOM from 'react-dom'; 4import './index.css'; 5import App from './App'; 6 7import { Dispatcher } from 'flux'; 8import { ReduceStore, Container } from 'flux/utils'; 9 10// Dispatcher 11const dispatcher = new Dispatcher(); 12 13// Action 14const act = { 15 SEND: 'send' 16}; 17 18const FormAction = { 19 send(val) { // ...[6] 20 dispatcher.dispatch({ 21 type: act.SEND, 22 value: val 23 }); 24 } 25}; 26 27// Store 28class FormStore extends ReduceStore { 29 30 getInitialState() { 31 return { 32 'value': null // ...[1] 33 }; 34 } 35 36 reduce(state, action) { 37 switch (action.type) { // ...[7] 38 case act.SEND: 39 return { 40 'value': action.value // ...[8] 41 }; 42 } 43 } 44 45}; 46 47// Storeのインスタンス生成 48const formStore = new FormStore(dispatcher); 49 50// View (React Component) 51class FormApp extends Component { 52 static getStores() { 53 return [formStore]; // ...[9] 54 } 55 static calculateState(prevState) { 56 return formStore.getState(); // ...[10] 57 } 58 render() { 59 console.log(this.state); 60 return ( 61 <div> 62 <FormInput /> 63 <FormDisplay data={this.state.value} /> // ...[11] 64 </div> 65 ); 66 } 67}; 68 69class FormInput extends Component { 70 _send(e) { // ...[4] 71 e.preventDefault(); 72 // @ts-ignore 73 FormAction.send(this.refs.myInput.value.trim()); // ...[5] 74 this.refs.myInput.value = ''; 75 return; 76 } 77 render() { 78 return ( 79 <form> 80 <input type="text" ref="myInput" defaultValue="" /> /* ...[2] */ 81 <button onClick={this._send.bind(this)}>Send</button> /* ...[3] */ 82 </form> 83 ); 84 } 85}; 86 87class FormDisplay extends Component { 88 render() { 89 return ( 90 <div>{this.props.data}</div> /* ...[12] */ 91 ); 92 } 93}; 94 95// Container 96const FormAppContainer = Container.create(FormApp); 97 98 99ReactDOM.render( 100 <FormAppContainer />, 101 document.getElementById('root') 102); 103
▼package.json
json
1{ 2 "name": "flux_app", 3 "version": "0.1.0", 4 "private": true, 5 "dependencies": { 6 "@testing-library/jest-dom": "^5.11.4", 7 "@testing-library/react": "^11.1.0", 8 "@testing-library/user-event": "^12.1.10", 9 "flux": "^4.0.1", 10 "react": "^17.0.2", 11 "react-dom": "^17.0.2", 12 "react-scripts": "4.0.3", 13 "web-vitals": "^1.0.1" 14 }, 15 "scripts": { 16 "start": "react-scripts start", 17 "build": "react-scripts build", 18 "test": "react-scripts test", 19 "eject": "react-scripts eject" 20 }, 21 "eslintConfig": { 22 "extends": [ 23 "react-app", 24 "react-app/jest" 25 ] 26 }, 27 "browserslist": { 28 "production": [ 29 ">0.2%", 30 "not dead", 31 "not op_mini all" 32 ], 33 "development": [ 34 "last 1 chrome version", 35 "last 1 firefox version", 36 "last 1 safari version" 37 ] 38 }, 39 "description": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).", 40 "main": "index.js", 41 "devDependencies": {}, 42 "author": "", 43 "license": "ISC" 44} 45
試したこと
TypeError: Class constructor FormApp cannot be invoked without 'new'
で検索し、変換する必要があるのかと推敲。その方法を調査中
https://stackoverflow.com/questions/51860043/javascript-es6-typeerror-class-constructor-client-cannot-be-invoked-without-ne
上記の記事を見つけたが、自分の環境にどのようにしたら適用できるだろうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。