【React】V18でreact-beautiful-dnd(ドラッグアンドドロップライブラリ)を使う方法

React

ReactのV18でreact-beautiful-dnd(ドラッグアンドドロップライブラリ)を使う方法を紹介します。

【React】V18でreact-beautiful-dnd(ドラッグアンドドロップライブラリ)を使う方法

2つの方法があります。

StrictModeを外す方法

Reactのバージョン18の場合、残念ながらまだreact-beautiful-dnd側が対応していないのですが、
ReactのstrictModeを外せば動かすことができます。

src/index.jsの以下の記述があります。

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

それを、以下のように変更します。

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  // <React.StrictMode>
    <App />
  // </React.StrictMode>
);

こちらの方法は、V18である程度アプリを作った段階だと選択肢として入りますが、
StrictModeがない状態では本番の開発ではなかなか使えない方法です。
個人開発の学習用などでは手軽にできるので、いい方法かもしれません。

ReactのV17にダウングレードする方法

ReactのV17にダウングレードするのは、割と簡単です。

package.jsonのdependencies部分を以下に変更します。

  "dependencies": {
    "@testing-library/jest-dom": "^5.16.2",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "react": "^17.0.2",
    "react-beautiful-dnd": "^13.1.0",
    "react-dom": "^17.0.2",
    "react-scripts": "5.0.0",
    "web-vitals": "^0.2.4"
},

その後、package-lock.json及びnode_modulesを削除します。
そして、yarn installまたはnpm installを実行して、新しいくV17のreactをいれます。

最後に、src/index.jsがV18とV17で書き方が変更されているので、
以下の記述に変更します。

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

ReactDOM.render(
    <React.StrictMode>
        <App />
    </React.StrictMode>,
    document.getElementById('root')
);

これで、yarn startもしくは、npm startをすれば、strictModeをオンにした状態でも正常に動作するようになります。

React

Posted by devsakaso