0

共有 (「同形」) コードベースを使用して、クライアントとサーバーの両方でレンダリングする React アプリ (Express サーバー) を作成しています。場合によっては、サーバーがレンダラーの場合、リクエスト オブジェクトにアクセスしたいことがあります。ノードは一度に 1 つのリクエストに応答するため、変数のキャッシュを利用して、応答を送信する前に変数をリセットするのは安全ではないでしょうか?

これは機能しますが、なぜそれが良いアイデアなのか悪いアイデアなのか誰か教えてもらえますか?...

サーバー.js

var r = require('./request-store');
app.use(function(req, res, next) {
  r.set(req);
  next();
});

var resolve = require('./resolve');
// ...deferring to react router for client / server routing
app.use(function(req, res) {
  resolve().then(function(data) {
    r.set(null);
    res.render('index', { data: data });
  });
});

request-store.js

var r = null;
module.exports.set = function(req) { r = req; };
module.exports.get = function() { return r; };

resolve.js

var r = require('./request-store');
module.exports = function() {
  return new Promise(resolve, reject) {
    if (isServer) {
      console.log(r.get());
      resolve();
    } else if (isClient) {
      resolve();
    }
  }
};
4

2 に答える 2