web-dev-qa-db-ja.com

React.default.memoは関数ではありません(React-Native)wrapWithConnect

これはエラーになります

_react.default.memoは関数ではありません

およびwrapWithConnect
これは react-nativeプロジェクトを作成し、connect関数を使用してディスパッチを私のreactコンポーネントに接続する前に問題なく動作しました。

パッケージバージョン:

    "react": "16.5.0",
    "react-redux": "^6.0.1",
    "redux": "^4.0.1",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",

コード

const mapDispatchToProps = dispatch => {
 return { 
  sendEmail: (email, navigateMap) => dispatch(sendEmail, navigateMap))

export default connect(null, mapDispatchToProps)(Login)
24
phaseharry

同じ問題が発生し、react-reduxのバージョンを最新のものを使用する代わりに6.0.1に変更し、問題は解決しました。

次のコマンドを実行してバージョンを変更してください:

npm install [email protected]

私のプロジェクトのバージョンは16.5.0以降ですが、これも影響があるかどうかはわかりません。

26
moi paslui

これとまったく同じエラーがありました。構文エラーが原因ではなく、react-reduxバージョンの互換性が原因であることに気付きました。糸チェックを実行すると、「react-redux#react@^16.8.4は、見つかった[email protected]の一致を満たしていません」という複数のメッセージが表示されました。

Expoは16.5.0の反応ですが、react-reduxはバージョン16.8.4の反応を期待しています。 moiが答えたように、react-redux 6.0.0をインストールするとうまくいきました。他のパッケージを変更しようとすると、さらに多くのエラーが表示されます

6
Deluxe Grove

16.5.0ではなくreact 16.6.0を使用してみてください

5
Yossi

これはエキスポの問題です。このコマンドを使用してエキスポキャッシュをクリアしてみてください

expo r -c

4

依存関係を更新してみてください。

同じ問題が発生し、 npm-check-updates を使用しています。

更新チェックログは次のとおりです。

 expo               ^32.0.0  →  ^32.0.6
 react               16.5.0  →   16.8.6
 react-navigation    ^3.6.1  →   ^3.7.1
 babel-preset-expo   ^5.0.0  →   ^5.1.1

Run npm install to install new versions.
2
pcs980

Expoアプリ内に最新のReact-Nativeを実装しようとしているときに迷子になり、避難所がないと感じている場合は、私の友達を心配しないでください。あなたは一人ではありません。

私はこの問題を抱えていて、それを発見しました:

  • expo 32.0react 16.8をサポートしていません

  • react-redux 7.1以降が必要react 16.8

私はそれをこのバージョンのセットで動作させることができました:

"expo": "^32.0.0",
"react": "16.5.0",
"react-redux": "^6.0.1",

あなたはあなたのpackage.jsonでそれらを置き換えることができます、そしてあなたはそうするべきです:

> rm -rf node_modules
> [npm|yarn] install
> expo r -c 

Node_modulesおよびExpoキャッシュから以前のバージョンを削除するため。

私のためにそれを解決した2つの答えを組み合わせるには:

  1. 新しいreact-reduxを削除します:yarn remove react-redux
  2. 古いバージョンのreact-reduxをインストールします:yarn add [email protected]
  3. エキスポキャッシュをクリア:expo r -c

これでうまくいきます。

1
Tomer Almog