• 0

تحويل المستخدم إلى route معين في React - Gatsby

أحاول أن أقوم بعمل مدونة وأريد أن يتم تحويل المستخدم من الصفحة الرئيسية / إلى  صفحة /posts وهذه الأخيرة يتم توليدها من قِبل gatsby-node.js، حاولت أن أستخدم المكون Redirect من حزمة @reach-router في مكون Index لكي يتم تحويل المستخدمين تلقائيًا لكن أصبح يظهر لدي خطأ Uncaught RedirectRequest 

هذا هو الكود الخاص بالصفحة الرئيسية / :

import React from 'react'
import { Redirect } from '@reach/router'


class Index extends React.Component {
  render() {
    return (
      <Redirect to={`/posts`} />
    )
  }
}

export default Index

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك إضافة ال noThrow لل redirect ليكون كالتالي

 return (
   <Redirect noThrow to={`/posts`} />
 )

حيث أن ال redirect تعمل مع ال componentDidCatch حتى تمنع إعادة عمل rerendering

لذلك تقوم react بتوليد هذا الخطأ 

أعتقد أن من بعد الإصدار 16 لا يظهر هذا الخطأ من الأساس

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

وأيضا يمكنك إستخدام UseEffect  اللذي هو بمتابة hook React المكافئ لـ componentDidMount.

يمكن كتابة الكود على الشكل التالي.

import { useEffect } from 'react';
import { navigate } from 'gatsby';

export default () => {
  useEffect(() => {
    navigate('/posts/');
  }, []);
  return null;
};

و سيتم تحويل المستخدم إلى الصفحة  posts/

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك استخدام navigate من gatsby 

import { useEffect } from 'react';
import { navigate } from 'gatsby';

export default () => {
  useEffect(() => {
    navigate('/posts/',   { replace: true });
  }, []);
  return null;
};

إذا كان يجب أن يحل route محل history بدلاً من دفع إدخال جديد في route history ، فقم بإضافة خاصية replace بقيمة true إلى وسيطة خيارات التنقل.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن