Razzle: ترطيب الأنماط لا يتم التقديم بشكل صحيح

تم إنشاؤها على ٣ أكتوبر ٢٠١٨  ·  5تعليقات  ·  مصدر: jaredpalmer/razzle

محبة razzle ، هذه أداة عظيمة.

أواجه مشكلة حيث أقوم بإعداد واجهة المستخدم المادية وكل شيء يعمل _ رائعًا_ باستثناء شيء واحد: عند زيارة صفحة فرعية وتحديث الصفحة يعطيني صفحة ذات أنماط بسيطة فقط. إنه في الواقع خطأ رائع لأنه اعتمادًا على الصفحة التي تم فتحها من آخر yarn start ، لن يتم عرض هذه الصفحة بشكل صحيح إلا إذا تم تحديثها ، ولكن إذا قمت بالتنقل والتحديث فلن يعمل (حتى على مسار الجذر).

  1. ابدأ الخادم بـ yarn start
  2. انتقل إلى http://localhost:3000/blog-posts على سبيل المثال
  3. قم بتحديث الصفحة (كل شيء يبدو هراء)
  4. اقتل الخادم (اترك نافذة المتصفح مفتوحة)
  5. ابدأ الخادم بـ yarn start
  6. قم بتحديث الصفحة وستبدو جميلة (عرض كل شيء بشكل صحيح)
  7. انتقل إلى _any_ صفحة أخرى
  8. تحديث ، يبدو مثل حماقة ... وكرر.

لقد جربت yarn build && yarn start:prod وتم تشغيل النظام ، ولكن فقط مع الحد الأدنى من الأنماط. ومع ذلك ، إذا وجدت رابطًا وقمت بالنقر فوقه ، فسيبدو التطبيق بأكمله جميلًا مرة أخرى.

أفترض أنها مشكلة تتعلق بالهيدرات أو ربما مزيج من ذلك و @material-ui/core/styles/withStyles . هل يواجه أي منكم هذه المشكلة؟

تختلف الفئات (يتم عرض html ) عند تحميل الصفحة اللاحق مما يعني أنه من المحتمل أن يكون مرتبطًا بالتحميل الأولي للأنماط / الفئات المتشابهة التي أعلم أنها تتعلق بالمناقشات التالية:

ومع ذلك ، كما يظهر وضعي أعلاه ، يبدو أنه يعمل في بعض الوقت مما يجعلني أعتقد أنه أقرب مما تظهره تلك المناقشات. أفكار؟

التعليق الأكثر فائدة

قد تعتقد أنه بعد ساعات طويلة مملة من البحث وتصحيح الأخطاء ، سيكون الأمر أكثر إرضاءً ، لكن الإصلاح يستخدم أساسًا after.js ، رد فعل jss ، لتوليد Document ثم السطر في الأسفل من هذا الموضوع (حول MuiThemeProvider الذي يرتبط MUI فقط):

  static async getInitialProps({ assets, data, renderPage }) {
    const generateClassName = createGenerateClassName()
    const jss = create(jssPreset())

    const page = await renderPage(App => props => (
      <JssProvider jss={jss} generateClassName={generateClassName}>
        <MuiThemeProvider sheetsManager={new Map()}>
          <App {...props} />
        </MuiThemeProvider>
      </JssProvider>
    ))

    return { assets, data, ...page }
  }

نرجو أن تتجنبوا الألم. : ص

ال 5 كومينتر

Hahahaha لقد واجهت نفس المشكلة مع Material UI في Razzle 😢

CharlyJazz هذا withStyles والالتحاق بالفئات المتشابهة؟

قد تعتقد أنه بعد ساعات طويلة مملة من البحث وتصحيح الأخطاء ، سيكون الأمر أكثر إرضاءً ، لكن الإصلاح يستخدم أساسًا after.js ، رد فعل jss ، لتوليد Document ثم السطر في الأسفل من هذا الموضوع (حول MuiThemeProvider الذي يرتبط MUI فقط):

  static async getInitialProps({ assets, data, renderPage }) {
    const generateClassName = createGenerateClassName()
    const jss = create(jssPreset())

    const page = await renderPage(App => props => (
      <JssProvider jss={jss} generateClassName={generateClassName}>
        <MuiThemeProvider sheetsManager={new Map()}>
          <App {...props} />
        </MuiThemeProvider>
      </JssProvider>
    ))

    return { assets, data, ...page }
  }

نرجو أن تتجنبوا الألم. : ص

jaredpalmerjylinman أليس من الممكن لخلق مثال على ذلك لتوثيق عبة محيرة؟

لأي شخص آخر يعاني من هذه المشكلة ، يمكنني أن أوصي بشدة باتباع مستندات Material-UI SSR الرسمية: https://material-ui.com/guides/server-rendering/

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

kkarkos picture kkarkos  ·  3تعليقات

sebmor picture sebmor  ·  4تعليقات

charlie632 picture charlie632  ·  4تعليقات

ewolfe picture ewolfe  ·  4تعليقات

corydeppen picture corydeppen  ·  3تعليقات