前提・実現したいこと
React+Typescriptの練習でテンプレートをApp.tsxに当てようとしています。
JSでの作成経験はあるのですが、tsxと違う箇所がいまいちわからず混乱中です。。。
create-react-app <app名> --typescriptで作り、
別途「Devices.tsx」(テンプレート)を作ってデータを表示しようとしていますがうまく行きません。
発生している問題・エラーメッセージ
JSX element type 'Devices' does not have any construct or call signatures.
該当のソースコード
Devices
1import * as React from 'react'; 2interface DevicesProps{ 3 varName:string, 4 name:string, 5 dsc?:string, 6 price?:string 7} 8 9const Devices:React.ReactNode = (DeviceList:DevicesProps) => { 10 <> 11 <a href="#" className={DeviceList.varName}> 12 <div className={`${DeviceList.varName}Bg`}> 13 <div className={`${DeviceList.varName}Msg`}> 14 <h1 className={`${DeviceList.varName}Title`}>{DeviceList.name}</h1> 15 <p className={`${DeviceList.varName}Dsc`}>{DeviceList.dsc}</p> 16 <p className={`${DeviceList.varName}Price`}>{DeviceList.price}</p> 17 <div className={`${DeviceList.varName}Links`}> 18 <a >Learn more<i className="fas fa-chevron-right"/></a> 19 <a >Buy<i className="fas fa-chevron-right"/></a> 20 </div> 21 </div> 22 </div> 23 </a> 24 </> 25 }; 26 export default Devices;
App
1import React from 'react'; 2import './App.scss'; 3import Devices from './Devices'; 4 5import {DTPhone} from '../../../appleclone/src/Assets/Data/List'; 6 7const App: React.FC = () => { 8 return ( 9 <div className="App"> 10 This is test 11 <Devices 12 varName={DTPhone.varName} 13 name={DTPhone.name} 14 dsc={DTPhone.dsc} 15 price={DTPhone.price} 16 /> 17 </div> 18 ); 19} 20 21export default App;
試したこと
・DevicesのTypeを当てていなかったので当てた
・mapで表示しようとしていましたが、{DTPhone.map(中略)}で書くと
mapがDTPhoneには無い(Undefined)と表示され使えず。
・App.tsx内にconstructorを以下のように書いてみようとしましたがエラーが発生したため断念;
constructor(props: DevicesProps) { super(props); this.state = {DevicesProps:DevicesProps[]}; }
補足情報(FW/ツールのバージョンなど)
"@types/jest": "24.0.19",
"@types/node": "12.7.12",
"@types/react": "16.9.6",
"@types/react-dom": "16.9.2",
"node-sass": "^4.12.0",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0",
"typescript": "3.6.4"
js/jsxで作るときはMapが使えたのにうまく動かないので苦戦しています。
Typeの設定などの問題でしょうか?
他に情報が必要でしたらお知らせください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/15 07:14 編集
2019/10/15 07:27
2019/10/15 07:28
2019/10/15 07:39
2019/10/15 07:40
2019/10/15 07:41