特定のページにコンポーネントを表示する方法

ルイシュナイダー

navbarユーザーがログインするたびに表示したい

ユーザーがログインボタンを押すたびに、ページをホームページに置き換えます

私は使用状態を定義しようとしましたが、パス名が等しくない/login/step-two、trueに設定されているどうかを条件に、アプリでusestateがtrueと等しい場合はナビゲーションバーを表示します

しかし、ページを更新するまでナビゲーションバーが表示されません

これが私がuseeffectで試したことです

  const [hasNavBar, setNavBar] = useState(false)
useEffect(() => {
    console.log(history.location.pathname);
    if (history.location.pathname !== '/login'|| history.location.pathname !=='/step-two'
    ) {
      setNavBar(true)
    }
  }, []) 

これがコード全体です

    const App = () => {
      const [hasNavBar, setNavBar] = useState(false)
      useEffect(() => {
        console.log(history.location.pathname);
        if (history.location.pathname !== '/login' ||
          history.location.pathname !== '/step-two'
        ) {
          setNavBar(true)
        }
      }, [])
      return (
        <div>
          <SNackbar></SNackbar>
          <Router history={history}>
            <div>
              <Route path="/login" exact component={FirstLogin} />
              <Route path="/step-two" exact component={SecondLogin} />
              <Route path="/home" exact component={Home} />
              <Route path='/ranking-list' exact component={RankingListPage} />
            </div>
          </Router>
          <div>
          {hasNavBar ?
            <div>
              <BottomNavBar />
            </div> : ''
          }
          </div>
        </div>
      )
    };
    
    export default App;

更新

history.listen buを使用しようとしましたが、同じエラーが表示されます
const App = () => {
  const [hasNavBar,setnavbar]=useState(false)
  useEffect(() => {
    history.listen(()=>{
      if (history.location.pathname === '/'||history.location.pathname === '/steptwo') {
        setnavbar(false);
      }else{setnavbar(true);}
        
      
    })
    if (localStorage.getItem("token") && history.location.pathname === '/') {
      history.replace('/home');
    }
  }, [])
  return (
    <div>
      <SNackbar></SNackbar>
      <Router history={history}>
        <div>
          <Route path="/" exact component={FirstLogin} />
          <Route path="/steptwo" exact component={SecondLogin} />
          <Route path="/home" exact component={Home} />
          <Route path='/ranking-list' exact component={RankingListPage} />
        </div>
      </Router>
      {hasnavbar?
       <div 
       style={{ position: 'fixed', bottom: '0px', width: "100%", height: '80px' }}>
        <BottomNavBar />
      </div>:''
      }
    </div>
  )
};

export default App;
yahya parvar

@lissettdmが言ったように

history.listen履歴が変更されるたびに関数を呼び出すために使用する必要がありますが、
ルーター内でアプリをラップする必要はありません

history.listenusestateを使用しない場合、useeffectは更新時に実行されるため、ページを更新するたびに変更されます。

デフォルトをfalseに定義し、条件がない場合は常にelseステートメントを使用して、ルートを変更するたびに呼び出され、hasnavbarをtrueにすることができます。

  const [hasnavbar,setnavbar]=useState(false)
  useEffect(() => {
    history.listen(()=>{
      if (history.location.pathname === '/login'||history.location.pathname === '/steptwo') {
        setnavbar(false);
      }else{setnavbar(true);}   
    })
  }, [])

これがコード全体です

const App = () => {
  const [hasnavbar,setnavbar]=useState(false)
  useEffect(() => {
    history.listen(()=>{
      if (history.location.pathname === '/login'||history.location.pathname === '/steptwo') {
        setnavbar(false);
      }else{setnavbar(true);}    
    })
  }, [])
  return (
    <div>
      <SNackbar></SNackbar>
      <Router history={history}>
        <div>
          <Route path="/login" exact component={FirstLogin} />
          <Route path="/steptwo" exact component={SecondLogin} />
          <Route path="/home" exact component={Home} />
          <Route path='/ranking-list' exact component={RankingListPage} />
        </div>
      </Router>
      {hasnavbar?
       <div>
        <BottomNavBar />
      </div>:''
      }
    </div>
  )
};

export default App;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

RouteReactJSで特定のコンポーネントを非表示にする方法

分類Dev

ログインページreactJSでヘッダーコンポーネントを非表示にする方法

分類Dev

特定のページ/コンポーネントのサイドナビゲーションバーを角度で非表示にする

分類Dev

ReactRouterを使用してコンポーネント/ページのコンテンツのみを表示するページにリダイレクトする

分類Dev

ページでコンポーネントを使用する方法

分類Dev

ページでコンポーネントを使用する方法

分類Dev

ReactRouter-404ページでコンポーネントを非表示にする方法

分類Dev

ionic2のコンポーネントからページを表示する方法

分類Dev

ページの親コンポーネント(メインコンポーネント)にスクロールを表示せずにページを拡大する方法

分類Dev

コンポーネントを別のコンポーネントに動的に表示する方法Angular2

分類Dev

ページの最上部にコンポーネントを動的に作成する

分類Dev

jsfコンポーネントを表示/非表示にする方法

分類Dev

ReactJSコンポーネントを表示/非表示にする方法

分類Dev

負のマージンでコンポーネントを非表示にする

分類Dev

HTML ページ内のコンポーネントの属性値を検査する以外に見つける方法

分類Dev

コンポーネントを2ページにインポートする方法は?

分類Dev

コンポーネントにビューページャーのページを設定する

分類Dev

Ionic2-ページコンポーネントのcssファイルをインポートする方法

分類Dev

ReactJS-同じページに2つ以上のコンポーネントを作成する方法

分類Dev

コンポーネント側に行数を表示する方法RSyntaxTextArea

分類Dev

Apache FelixWebコンソールでコンポーネントページを有効にする方法

分類Dev

Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

分類Dev

Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

分類Dev

Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

分類Dev

react-routerを使用して特定のページの<Header />コンポーネントを除外する

分類Dev

コンポーネントを特定の位置に配置する方法は?

分類Dev

すべてのページに表示される親コンポーネントのスタイル

分類Dev

コンポーネントの初期化時にAngularMaterialTooltipを表示する方法

分類Dev

レイヤードペイン内のコンポーネントを表示する方法

Related 関連記事

  1. 1

    RouteReactJSで特定のコンポーネントを非表示にする方法

  2. 2

    ログインページreactJSでヘッダーコンポーネントを非表示にする方法

  3. 3

    特定のページ/コンポーネントのサイドナビゲーションバーを角度で非表示にする

  4. 4

    ReactRouterを使用してコンポーネント/ページのコンテンツのみを表示するページにリダイレクトする

  5. 5

    ページでコンポーネントを使用する方法

  6. 6

    ページでコンポーネントを使用する方法

  7. 7

    ReactRouter-404ページでコンポーネントを非表示にする方法

  8. 8

    ionic2のコンポーネントからページを表示する方法

  9. 9

    ページの親コンポーネント(メインコンポーネント)にスクロールを表示せずにページを拡大する方法

  10. 10

    コンポーネントを別のコンポーネントに動的に表示する方法Angular2

  11. 11

    ページの最上部にコンポーネントを動的に作成する

  12. 12

    jsfコンポーネントを表示/非表示にする方法

  13. 13

    ReactJSコンポーネントを表示/非表示にする方法

  14. 14

    負のマージンでコンポーネントを非表示にする

  15. 15

    HTML ページ内のコンポーネントの属性値を検査する以外に見つける方法

  16. 16

    コンポーネントを2ページにインポートする方法は?

  17. 17

    コンポーネントにビューページャーのページを設定する

  18. 18

    Ionic2-ページコンポーネントのcssファイルをインポートする方法

  19. 19

    ReactJS-同じページに2つ以上のコンポーネントを作成する方法

  20. 20

    コンポーネント側に行数を表示する方法RSyntaxTextArea

  21. 21

    Apache FelixWebコンソールでコンポーネントページを有効にする方法

  22. 22

    Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

  23. 23

    Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

  24. 24

    Swing GUI JPanelに表示するカスタムペイントコンポーネントを取得する方法

  25. 25

    react-routerを使用して特定のページの<Header />コンポーネントを除外する

  26. 26

    コンポーネントを特定の位置に配置する方法は?

  27. 27

    すべてのページに表示される親コンポーネントのスタイル

  28. 28

    コンポーネントの初期化時にAngularMaterialTooltipを表示する方法

  29. 29

    レイヤードペイン内のコンポーネントを表示する方法

ホットタグ

アーカイブ