ike81818
@ike81818

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Chromeが2回リロードしてしまうのを1回にしたいです

Q&A

Closed

解決したいこと

ローカルテスト環境において、Chromeが2回リロードしてしまうのを1回にしたいです。

ページ遷移をしたとき、投票数を1足すというコードをReactで作りました。
が、ローカルテスト環境において実行すると、1回のページ遷移で2足されてしまいます。
https://localhost:3000

ちなみに、本番環境にデプロイしたものは、ちゃんと1だけ足されます。
https://tubular-nasturtium-eb5705.netlify.app/

解決方法を教えて下さい。

コード

src/App.js
import { BrowserRouter, Route, Link, Routes } from "react-router-dom";
import { legacy_createStore as createStore } from "redux";

const App = () => (
  <BrowserRouter>
    <div className="container text-center mt-5">
      <Routes>
        <Route exact path="/" element={<Home />}></Route>
        <Route path="/about" element={<About />}></Route>
      </Routes>
    </div>
  </BrowserRouter>
);

const vote = (state = 0, action) => {
  switch (action.type) {
    case `ADD`:
      return state + 1;
    default:
      return state;
  }
};

let store = createStore(vote);

const Home = () => {
  store.dispatch({ type: `ADD` });
  let x = store.getState().toString();
  return (
    <div>
      <h1>Welcome</h1>
      <p>投票数:{x}</p>
      <p>
        <Link to="/about">About</Link>
      </p>
    </div>
  );
};

const About = () => {
  store.dispatch({ type: `ADD` });
  let x = store.getState().toString();
  return (
    <div>
      <h1>About</h1>
      <p>投票数:{x}</p>
      <p>
        <Link to="/">Home</Link>
      </p>
    </div>
  );
};

export default App;

0

1Answer

<React.StrictMode>を利用していませんか?
Reactのstrictモードは意図しない副作用の検出をするために、意図的に2回動作します。
strictモードは開発環境にしか適用されません。
本番環境では期待通りの挙動になっているのもそのためかと思います。

0Like

Comments

  1. @ike81818

    Questioner

    おっしゃるとおりでした。
    このプログラムだけでなく、console.logで確認するたびに2回出てくるのを、あきらめていました。
    今後の開発がスムーズにできるようになりそうです。
    本当にありがとうございます。

Your answer might help someone💌