Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 不变违规:无法在“Connect(KnowStatus)”的上下文或道具中找到“store”.将根组件包装在一个大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Redux的新手当我使用redux进行服务器端渲染时它抛出了这个错误

当我不使用serversiderendering它工作正常但当我使用它时抛出这样的错误

ServersiderenderExpress.js

import express from 'express';

import bodyParser from 'body-parser';

import {Server} from 'http';
import React from 'react';
import {renderToString} from 'react-dom/server';
import {match,RouterContext} from 'react-router';
import routes from '../client/routes';

import HelR_493_11845@et from 'react-HelR_493_11845@et';
import compression from 'compression';
import favicon from 'serve-favicon';


let app = express();
app.use(bodyParser.json());
app.use(compression());
app.use(favicon(__dirname + '/favicon/favicon.ico'))
app.use(express.static('public'));


app.get('*',(req,res) => {
    match({routes,LOCATIOn: req.url},(err,redirectLOCATIOn,renderProps)=> {
        if (err) {
            return res.status(500).send(err.messagE);
        }
        if (redirectLOCATIOn) {
            return res.redirect(302,redirectLOCATIOn.pathname + redirectLOCATIOn.search);
        }
        let markup;
        let rendered = renderToString(<RouterContext {...renderProps}/>);
        let head = HelR_493_11845@et.rewind();
        if (renderProps) {
            markup = `
            <!DOCTYPE html>
            <html>
              <head>
                <Meta charset="utf-8"/>
                ${head.titlE}
                ${head.Meta}
                ${head.link}
              </head>
              <body>
                <div id="app">
                ${rendereD}
                </div>
                <script src="bundle.js"></script/>
              </body>
            </html>`
        }
        res.write(markup);
        res.end();


    })
});


app.listen(3000,() => {
    console.log('Listening')
});

解决方法@H_616_16@
match函数返回的renderProps仅包含应由req.url呈现的路由组件的信息.您仍然需要呈现< Provider>并为它提供商店对象.

import { createStore } from 'redux'
import { Provider } from 'react-redux'

match(...,(...) => {

  // ...

  // create the store like you do on the client side,giving
  // it your reducer(s) and possibly an initial state
  const store = createStore(reducer,initialStatE)
  const rendered = renderToString(
    <Provider store={storE}>
      <RouterContext {...renderProps} />
    </Provider>
  )

  // ...

})

大佬总结

以上是大佬教程为你收集整理的node.js – 不变违规:无法在“Connect(KnowStatus)”的上下文或道具中找到“store”.将根组件包装在一个全部内容,希望文章能够帮你解决node.js – 不变违规:无法在“Connect(KnowStatus)”的上下文或道具中找到“store”.将根组件包装在一个所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。