- 投稿日:2019-10-04T18:18:41+09:00
React Map<K,V>型でループしてコンポーネントを返したい。
表記のとおり、Map型でループしてコンポーネントを返したい場合、
function Qiita(props: { chikyuwaMawaruMap: Map<Date, Unit> }) { return ( //NG Map<>型でループできる方探してたらforEach があったのでreturn returnで返るのかなと憶測で考えていたけどだめでした。Object.entries() する必要があるみたいです。 return ( {props.chikyuwaMawaruMap.forEach((value, index) => { return(<JikkoWaSarerukedoReturnSarenai />) }} ) //OK {Array.from(props.chikyuwaMawaruMap.entries()).map((entry, index) => { Return (<SampleComponent />); }} //FYI interface Map<K, V> { clear(): void; delete(key: K): boolean; forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void; get(key: K): V | undefined; has(key: K): boolean; set(key: K, value: V): this; readonly size: number; }
- 投稿日:2019-10-04T17:11:52+09:00
俺は "楽して" Reactを "試して" みたいんだよ!
Reactを触ってみたいけど、
- ちょっと敷居高そうだな~
- 環境作るのめんどくさそうだな~
と思っているあなたへ。
ちょっと試してみたいだけなら、とても簡単に環境を用意できます。
以下のコードをHTMLファイルとして保存し、ブラウザで表示してみてください。<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>easy react</title> </head> <body> <div id="root"></div> <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <script type="text/babel"> class HelloWorld extends React.Component { render() { return ( <h1> {this.props.text} </h1> ) } } ReactDOM.render( <HelloWorld text="HelloWorld!!" />, document.getElementById("root") ); </script> </body> </html>
HelloWorld!!
と表示されたと思います。
簡単ですね。
ちょっと試してみたいだけなら、これでも十分です。しかし、このままではVSCodeでオートフォーマットが効きません。
<script type="text/babel">
を<script type="text/javascript">
に書き換えることで、オートフォーマットが効くようになります。
コードを書いているときはtext/javascript
、実行するときはtext/babel
といった具合に使い分けましょう。興味が湧いたら、ぜひ公式へ!
React 公式ページ
- 投稿日:2019-10-04T16:27:36+09:00
Webプログラマがアプリ開発(ios,android)
- swift Objective-cは敷居が高い。
- 使い慣れたVS Codeでコーディングがしたい。
- はじめは簡単なアプリ作りたい
そんな方にReact Native
※少しReactかじった方が良いかも環境
- mac
- XCode シュミレーター必須
React Nativeのはじめ
Expoの方ではなく、「React Native CLI Quickstart」を実施
- homebrewで各インストール
brew install yarn brew install node brew install watchman brew tap AdoptOpenJDK/openjdk brew cask install adoptopenjdk8
- npmでreact-native-cliをグローバルへインストール
npm install -g react-native-cli
- ソースを置くフォルダでinitして実行
react-native init AwesomeProject cd AwesomeProject react-native run-iosReactのモジュールが無いよとビルドエラーになった場合、以下のコマンドで、モジュール取得して再ビルドしたらいけた。
cd ios pod install動いたあとは、App.jsを修正していくことでアプリの開発が行える。 簡単
- 投稿日:2019-10-04T09:48:41+09:00
ReactiveProgrammingとかRxとかReactとか何がどう違うの?
似たような用語とか言葉が多く、よくわからなかったので簡単に調べてみました。それぞれは詳しく調べてないので間違っていたらすみません。
上から順番に見ていくとそれぞれの関係性がわかるかと思います。英単語としてのReactive
反応する、反発する、状況の変化に対応するなどの意味
Reactive Programming
reactive programmingはデータフロー指向のプログラミングパラダイム
手続き型とかオブジェクト指向とかあるけどそういうレベルで異なるコンセプトのプログラミング手法ってことかな?それを関数型に落とし込んだのがFRP(Functional Reactive Programming)?
* FRPライブラリを作ってわかった、FRPの意味と意義 - QiitaRxとは
Rxはc#のライブラリであるReactiveExtentionの略
RPを実現させるためのライブラリ(正確にはちょっと違うかも?)ReactiveExtensionはFRPのバリエーションの一つらしい
Rxの各言語への拡張
Rxの思想は秀逸で他の言語へも拡張
RxJS、RxJava、RxSwift…
- リアクティブプログラミングの概観と、各言語での実装について | ALTUS-FIVE
- 各言語に広まったRx(Reactive Extensions、ReactiveX)の現状・これから - Build Insider
- RxJS / Reactive Extensions とは - Qiita
Reactとは
Facebookが開発しているUI用のJSライブラリ(フレームワーク?)
名前の由来や関係性として、ReactもRP/FRPを表現する仕組みがあるのでReactなのかな?
あくまでFacebookのような常に状態が変更される(リアクティブ)サイトのためのライブラリだからReactなのかも
React Native
ReactをNative系(Android、iOS、UWP)に拡張したもの
- 投稿日:2019-10-04T02:16:32+09:00
Next v9 + TypeScript の環境構築
NextJS
+TypeScript
環境構築手順の備忘録です。バージョンはNext9.0.7
。公式: Learn - TypeScript | Next.js
手順
プロジェクトディレクトリを作成してパッケージをインストールします。
パッケージ:react
react-dom
next
typescript
@types/react
@types/react-dom
@types/node
mkdir next-ts cd next-ts mkdir pages touch pages/index.tsx
yarn add react react-dom next typescript @types/react @types/react-dom @types/node
package.json
のscripts
を追加します。package.json... "scripts": { "dev": "next", "build": "next build", "start": "next start" } ...動作確認
pages/index.tsx
で動作を確認します。pages/index.tsxconst IndexPage = () => <h1>Helloworld!</h1>; export default IndexPage;npm run dev
初回起動時に
next-env.d.ts
とtsconfig.json
が生成されます。
TypeScriptが効いているか確認します
タイプチェックをストリクトモードにしてみます。
tsconfig.json... "strict": true, ...pages/index.tsxconst IndexPage = ({ userAgent }) => ( <h1>Hello world! - useragent: {userAgent}</h1> ); IndexPage.getInitialProps = async ({ req }) => { const userAgent = req ? req.headers['user-agent'] : navigator.userAgent; return { userAgent }; }; export default IndexPage;
VS Code
にTypeScript
プラグインを入れている場合はエディタ側にエラー表示がでていると思います。サーバーを
npm run dev
で再起動します。最後にタイプエラーを修正して終わりにします。
pages/index.tsximport { NextPage } from 'next'; const IndexPage: NextPage<{ userAgent: string }> = ({ userAgent }) => ( <h1>Hello world! - useragent: {userAgent}</h1> ); IndexPage.getInitialProps = async ({ req }) => { const userAgent = req ? req.headers['user-agent'] || '' : navigator.userAgent; return { userAgent }; }; export default IndexPage;