「開発関連」カテゴリーアーカイブ

バグじゃないけどIEさんよ・・・!

DOMがらみで要素指定してのforEachは気をつけよう

javascript forEachをIEで使う時の注意点 | Next Clip

[javascript]forEachをIEで使う時の注意点

JSONとかのArrayからのforEachは大丈夫みたい?
死ぬかと。

参考

IEで NodeList を forEach するとエラーになる問題の対処方 – Qiita
https://qiita.com/snjssk/items/8d179566b023703c0663

おまけ
forEach vs map in JavaScript – Qiita
https://qiita.com/Uuparu/items/e9867cb6c48736700a4f

おまけ2
async-awaitでもforEachしたい! – Qiita
https://qiita.com/jkr_2255/items/62b3ee3361315d55078a

WPの吐き出す絶対パスをルートからのパスに全置換とか絶対やりたくない。

でもどうしてもやってほしいって

テストしました

参考サイトいろいろあるけどうごかないものたくさんありました。
これは動きました。かなり前の記事だけど。
生きているコード、ありがたいなぁ。

WordPressで自ドメインのURLを相対パスに変換する方法 – モンキーレンチ
https://2inc.org/blog/2012/02/03/1198/

Storybookなれるまでやっかいだなー

ReactのUI見本帳、testerとしてStorybookを使ってみている
つまづきのめも

ほぼすべてのブログ記事が古い

現状バージョンで記事書いている人いない
それだけ昔から使われているのか、メジャーバージョンアップがおおいのか、もはや誰も使っていないのか・・・

themeやグローバルのcssが読み込まれない

なんじゃこら
コンポーネントごとなので、上位階層で指定していた上記が読み込まれない。
そうか・・・
config.jsでcssを読み込む記述しか見当たらない・・・ので

この記事で書いていた

Storybook による UI & Unit Testing のススメ – Mercari Engineering Blog

if (process.env.NODE_ENV !== 'test') {
  addDecorator(story => (
    <React.Fragment>
      <GlobalStyle />
      {story()}
    </React.Fragment>
  ));
}

を参考にした。
ラッパーを入れればいいらしい
そのラッパーはデコレーターと呼ぶらしい

公式サイト
Intro to Addons
https://storybook.js.org/docs/addons/introduction/#storybook-decorators

公式の記述の感じでdecoratorsが毎回使われるように設定を追記した。

import Layout from '../../containers/LayoutForStory';
import SimpleTable from './Table';

export default {
  component: SimpleTable,
  title: 'SimpleTable',
  // Our exports that end in "Data" are not stories.
  excludeStories: /.*Data$/,
  decorators: [storyFn => <Layout>{storyFn()}</Layout>],
};

...

classじゃなくてclassNameだよと怒られる

webアプリ本体ではbabel-plugin-react-html-attrsを使っているのだけど、それをStorybookは知らないからめっちゃおこってくる

Storybook v5 を TypeScript × React 環境に導入する | blog.kwst.site
https://blog.kwst.site/201907293042/

このなかの記述のようにwebpackでbabelの設定すれば良さそう
とおもって、
.storybook/webpack.config.js
をつくってbabelのことだけ追加して配置したらこんどはcssの記述がキモいって怒り出した。

Can’t import css · Issue #1603 · storybookjs/storybook
https://github.com/storybookjs/storybook/issues/1603

自分のにしたからデフォの設定がなくなったのか・・・
これをみて最終的にこうなった

var webpack = require('webpack');
var path    = require('path');
const includePath = path.resolve(__dirname, '..');

module.exports = {
  module: {
    rules: [{
      test: /\.jsx?$/,
      exclude: /(node_modules|bower_components)/,
      use: [{
        loader: 'babel-loader',
        options: {
          plugins: [
            'react-html-attrs',
            'babel-plugin-styled-components',
            [require('@babel/plugin-proposal-decorators'), {legacy: true}]
          ],
          presets: ['@babel/preset-react', '@babel/preset-env']
        }
      }]
    },
    {
      test: /\.css$/,
      include: includePath,
      use: [
        {
          loader: 'style-loader',
        },
        {
          loader: 'css-loader',
          options: {
            sourceMap: true,
          },
        },
      ],
    },
    {
      test: /\.(woff|woff2|eot|ttf|svg)$/,
      include: includePath,
      use: 'url-loader'
    }
  ]
  },
  resolve: {
    extensions: [".ts", ".tsx", ".js", ".json"]
  }
};

これでええかは知らない。resolveのあたりこれでええんか?とおもうけど、動いたのでいったんメモ。

[add 2020.0206]

画像のパスがあわない

静的においている画像をcss in jsで呼ぼうとしたらそんなの無いって怒られた

Serving Static Files
https://storybook.js.org/docs/configurations/serving-static-files/

npm scriptsに基準となるディレクトリを指定してパスをあわせる。

    "storybook": "start-storybook -s ./public -p 6006",

[//add 2020.0206]

tab退避ーStorybook polished styled-components

Storybook

プロダクト間共通の React コンポーネントライブラリを運用する話 – SmartHR Tech Blog

Storybook for React
https://storybook.js.org/docs/guides/guide-react/

Writing Stories
https://storybook.js.org/docs/basics/writing-stories/

StoryBook(React)最初の1歩 – Qiita
https://qiita.com/sugasaki/items/66d260f9602921196b07

polished

Sass(SCSS)の関数をstyled-componentsでも使いたい
https://diff001a.netlify.com/sass-styled-components/

polished | Documentation
https://polished.js.org/docs/#rgba

styled-components

styled-componentsを使ったCSS設計 – Qiita
https://qiita.com/taneba/items/4547830b461d11a69a20#%E5%AE%9A%E6%95%B0%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B

Reactでstyled-componentを使ってベースとなるstyleを当てる方法 – Qiita
https://qiita.com/102Design/items/e9f3ede130999d3a1061
テーマや共通cssを使いたかったけどよくわからんかった。

次の記事で書いているようにThemeProviderを読み込む必要があった。

How to use Themes in styled-components – DEV Community 👩‍💻👨‍💻
https://dev.to/aromanarguello/how-to-use-themes-in-styled-components-49h

これでリセットcssと共通のベースcssが読み込めた。

さよならSearchEverything

ACFの検索結果にSearchEverythingを長年使ってたけどそろそろ3年メンテされていない&検索文章や結果に半角スペースあるとバグるので乗り換えてみる。

そのまんま。乗り換えてみました。

参考URL

カスタムフィールドも検索対象にできるプラグイン「Relevanssi」

カスタムフィールドも検索対象にできるプラグイン「Relevanssi」

Indexing only some visible custom fields | Relevanssi

Indexing only some visible custom fields

Relevanssi and Polylang | Relevanssi

Relevanssi and Polylang

Manual search results filtering | Relevanssi

Manual search results filtering

基本は

設定画面からカスタムフィールドを含むように指定

設定画面から抜粋文の作成とハイライトを指定

抜粋文や結果に出したくないACFの種類をフィルターを使って除外

手動でインデックスさせる

でdone。
ハイライトも抜粋文もばっちり。重くならないか心配だけどしばらく使ってみる。

Bogoで記事を複製・更新するとスラッグに-2がつくトラブルを回避

どこにも情報無いなーと思ったら、ドンピシャでこれっぽいのでメモしておく。

結論:新エディタ(Gutenberg・グーテンベルグ)との処理のバッティングのよう

編集するとスラッグが変わってしまう | WordPress.org https://wordpress.org/support/topic/%e7%b7%a8%e9%9b%86%e3%81%99%e3%82%8b%e3%81%a8%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b0%e3%81%8c%e5%a4%89%e3%82%8f%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%99/

情報ありがたい〜。というわけで

対策としては2つ

  • functions.phpに処理を追記して一時的に回避
  • クラシックエディタ(WP公式プラグイン)を有効にする

のどちらかかな。いったん。

方法1)functions.phpに処理を追記して一時的に回避

functions.phpに下記を追加

function slug_filter_function( $override_slug, $slug, $post_ID, $post_status, $post_type, $post_parent ){
    $override_slug = $slug;
    return $override_slug;
}
add_filter( 'pre_wp_unique_post_slug', 'slug_filter_function', 10, 6 );

リンクだけだと情報がなくなっていくこんな世の中なので抜粋。
ありがたい・・・。

方法2)クラシックエディタ(WP公式プラグイン)を有効にする

クラシックエディタを有効化すると回避できた模様

エディタのせいならクラシックエディタ使えばその処理通らないのでは?と思ってクラシックエディタDLして有効化。
するとどうやら回避できた模様です。
今回のコンテンツはほとんどACFだし、グーテンベルグ移行するひとが多くなると、
このままクラシックエディタの寿命は延びないだろうし、いざとなればすぐ戻せるし、
一旦上記はコメントアウトして様子を見ることにしました。
クラシックエディタよ、永遠にそばにいて・・・(どうなることやら)。

他にクイック編集だとスラッグが変えられるという情報もあって、最初はそれで頑張ってたけど手間がすごい・・・。

Bogoで別言語記事を更新するとスラッグに-2がつくトラブルを回避

どこにも情報無いなーと思ったら、ドンピシャでこれっぽいのでメモしておく。

新エディタとの処理のバッティングのよう

編集するとスラッグが変わってしまう | WordPress.org https://wordpress.org/support/topic/%e7%b7%a8%e9%9b%86%e3%81%99%e3%82%8b%e3%81%a8%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b0%e3%81%8c%e5%a4%89%e3%82%8f%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%99/

というわけで

WP5系で発生する bogo + 新エディタでのスラッグに-2がつくトラブル回避にはfunctions.phpに下記を追加。

function slug_filter_function( $override_slug, $slug, $post_ID, $post_status, $post_type, $post_parent ){
    $override_slug = $slug;
    return $override_slug;
}

add_filter( ‘pre_wp_unique_post_slug’, ‘slug_filter_function’, 10, 6 );

リンクだけだと情報がなくなっていくこんな世の中なので抜粋。

もしくはクラシックエディタを使う

クラシックエディタだと不要そうなので一旦上記はコメントアウト

他にクイック編集だとスラッグが変えられるという情報もあって、最初はそれで頑張ってたけど手間がすごい・・・。