React 및 TypeScript를 사용한 Laravel 및 관성
9939 단어 reacttypescriptlaravel
laravel new inertia-typescript
백엔드
composer require inertiajs/inertia-laravel
resources/views/app.blade.php
에서 다음 내용으로 루트 템플릿을 만듭니다.<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link href="{{ mix('/css/app.css') }}" rel="stylesheet" />
<script src="{{ mix('/js/app.js') }}" defer></script>
</head>
<body>
@inertia
</body>
</html>
routes/web.php
에서 경로 생성use Inertia\Inertia;
Route::get('home', function(){
return Inertia::render('Home');
});
참고:
render
메서드 내부에 지정된 홈 구성 요소를 아직 생성하지 않았습니다.프런트 엔드
here 의 지침에 따라 프런트 엔드를 설정해 보겠습니다.
npm install react react-dom @types/react
npm install @inertiajs/inertia @inertiajs/inertia-react
npm install --save-dev ts-loader typescript
typescript
파일을 생성하여 초기화tsconfig.json
:tsc --init --jsx react
resources/js/app.js
.import { InertiaApp } from '@inertiajs/inertia-react'
import React from 'react'
import { render } from 'react-dom'
const app = document.getElementById('app')
render(
<InertiaApp
initialPage={JSON.parse(app.dataset.page)}
resolveComponent={name => import(`./Pages/${name}`).then(module => module.default)}
/>,
app
)
Home
에서 resources/js/Pages/Home.tsx
구성 요소를 만듭니다.import React from "react";
const Home = () => {
let foo: string = "React";
const bar: string = "TypeScript";
return (
<h1>
Hello {foo} + {bar}
</h1>
);
};
export default Home;
Notice that I have
.tsx
extension instead of.jsx
mix.js
파일에서 mix.ts
를 webpack.mix.js
로 변경:mix.ts('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
//
]);
npm run dev
🔴 앱 초기화를 위해
resources/js/app.js
구문을 작성했지만 Babel이 이해할 수 있도록 JSX
설치하지 않았기 때문에 react-preset
파일 내부에 오류가 발생합니다.@babel/preset-react
를 설치할 수 있습니다.npm install --save-dev @babel/preset-react
.babelrc
파일을 만듭니다.{
"presets": ["@babel/preset-react"]
}
npm run dev
를 다시 실행하면 지금 자산을 컴파일할 수 있습니다. /home
경로를 방문하여 브라우저에서 출력을 볼 수 있는지 확인하십시오. Disclaimer: This is not the definitive guide on setting up
TypeScript
with React for Laravel and Inertia. This is just how I am proceeding with this setup.
오류를 발견하거나 더 나은 접근 방식을 알고 있다면 아래 의견에 피드백을 남겨주세요 🙏🏼
데모 소스 코드를 찾을 수 있습니다here.
업데이트
우리가 JavaScript를 완전히 버릴 수 있고 위의
@babel/preset-react
단계를 피할 수 있다면 Twitter에서 언급했습니다. 쉽게 할 수 있습니다.수행 방법을 보여주는 데모 저장소에서 커밋: 49be431
Reference
이 문제에 관하여(React 및 TypeScript를 사용한 Laravel 및 관성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zubairmohsin33/laravel-and-inertia-with-react-and-typescript-18g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)