JSのmap関数で今参照しているアイテムの直前のアイテムを参照したい場合についてです。
array.map((item,index,array)=>{
...
})
map関数で第3引数にオリジナルの配列を渡せるのでそれを使って参照すればOKです。
const array = ['test','code','hoge'];
array.map((item,index,array)=>{
return index>0 ? console.log(item,array[index-1]) : console.log(item);
})
上の例を実行すると
"test"
"code" "test"
"hoge" "code"
と出力されます。
import {jsx,css} from '@emotion/core';
emotion11で破壊的変更が入ったのでimportするライブラリ名を以下の通りに変更します
import {jsx,css} from '@emotion/react'
tsconfig.jsonのcompilerOptionsでtypesを追加
"jsx": "react-jsx",
"types": ["@emotion/react/types/css-prop"],
またファイルの冒頭に以下のコメントアウトを入れます。GitHubに書いてありました。
/** @jsxRuntime classic */
/** @jsx jsx */
別途用意したフリーフォントをスプラッシュ(起動画面)で使いたかったが、起動時はそもそもフォントがロードされていない状態なので使えないようです。
そのため対策としては、
が必要になってきます。
Info.plistに追加後 RNのコンポーネント内で
fontFamily: 'RopaSans-Italic'
のようにスタイルで指定すればOKです。
絶対パス設定がうまくいっていないと実機で立ち上がらなくなります
Error: Unable to resolve module `components/ImageViewer` from `src/App.tsx`: components/ImageViewer could not be found within the project.
iOSデバイス実機でのエラー
上記のようなエラーが発生して main.jsbundleがビルドされなくなります。
以下の設定でクリアできました。
"baseUrl": "./"
またbabel.configでaliasを設定すると解決しました。
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
[
'module-resolver',
{
extensions: ['.js', '.jsx', '.ts', '.tsx', '.android.js', '.android.tsx', '.ios.js', '.ios.tsx'],
root: ['./'],
alias: {
src: './src',
},
},
],
],
};
上記設置を適用することで 以下のようにsrcからimportできるようになります。
import { ColorButton } from 'src/components/ControlPanel/UI/ColorButton';
vscode-styled-componentsをインストールします。VS Codeのエクステンショの追加タブから追加できます。
インストールされると以下のようにCSS-in-JSのコードが表示されます。
<span className='fa-layers fa-fw'>
<FontAwesomeIcon icon='circle' size='lg' css={circleStyle} />
<FontAwesomeIcon
icon='plus'
transform='shrink-4 up-4 left-4'
css={plusStyle}
/>
</span>
spanをfa-layersクラスにして一番下にするものからFontAwesomeIconコンポーネントで配置します。
Hasura側でカラムを増やした場合、HasuraのGraphiQLからはGraphQLリクエストが正しく実行できるが、Permissionの設定をしないとフロント側からGraphQLリクエストしても当該カラムが存在しないことになって表示されない。
Auth0のAllowed Web Originsのドメイン名の末尾に/がついていると、レスポンスが異常に遅くなる。
チャットなど変更のリアルタイム監視をする場合はWebSocketLinkとsubscriptionを使う。
subscritpionしているものをmutationする際にキャッシュ操作をすると出る。そもそもキャッシュ操作をしなくても良さそう?
Routeの設定で /callbackと / に対して明示的にコンポーネントを指定する。
insert先のカラムと送信している値の型が違うとこのエラーが出る。
私の場合、あるテーブルのidがINT型 owner_idがTEXT型のときに、誤ってidとauth0のText型 のidを照合していたため出ました。
hasura側のDATAのPermissionでInsertの権限を確認する
matchの値が取得できない時は、withRouterが遷移先のページに設定されているかを確認する。
フロントエンド側だけでエラーが発生する場合、だいたいhasura側のDATAのPermissionに問題がある場合が多いです。
package.jsonにhomepageオプションを追加します。/sub-directory/となっているところを任意のディレクトリ名にすればOKです。
・・・"private": true,
"homepage": "/sub-directory/",
"dependencies": {・・・
&::placeholoder
でplaceholderのスタイルを指定できます。
const inputStyle = css`
&::placeholder{
font-family: serif;
}`
publicディレクトリのindex.html中の以下の場所にcrossoriginの設定を追加すると出なくなりました。
<link rel="manifest" crossorigin="use-credentials" href="%PUBLIC_URL%/manifest.json" />