Отклонение необработанного обещания: ошибка типа: неопределенный не является объектом (оценка ‘window.Расположение.href = ‘/charCreate»)

#reactjs #react-native

#reactjs #react-native

Вопрос:

Добрый вечер!

Я создаю приложение React, в котором пользователь может перемещаться между различными страницами, такими как логин, регистрация, создание персонажа и т.д. Это приложение предназначено как для Интернета, так и для Android. В веб-приложении это перенаправление выглядит полностью нормально и загружает CharCreate.js файл правильно, приложение Android этого не делает, и я получаю необработанный отказ от обещания.

Я знаю, что мне нужно по-другому маршрутизировать страницу на Android, включая изменение импорта с react-router-dom на react-router-native, но я продолжаю получать это предупреждение. Я не могу продолжить разработку без его удаления.

Вот мой App.js файл:

 import React, { useState, useEffect } from "react";
import { Router, Routes, NativeRouter, Route, Redirect, Link } from "react-router-native";
import { render } from "react-dom";
//import Register from "./frontend/Register.js";
import CharCreate from "./frontend/CharCreate.js";
//import QuestForm from "./frontend/components/QuestPage";
import Login from "./frontend/Login.js";
import Auth from "./frontend/auth.js";
import 'localstorage-polyfill';

export default function App() {

  const token = localStorage.getItem("token")
  console.log(token);
    // true == active user (logged in)
    const [state, setState] = useState(token !== null amp;amp; token !== "" ? true : false);

    // Set user vars to access the Canvas page
    function onLogin(active)
    {
        setState(active);
        return <Redirect to="/charCreate"/>
    }

    // clear all fields on logout
    function onLogout(active)
    {
        setState(active);
        return <Redirect to="/" />
    }

    function getUser(token) {

    }

    return (
      <NativeRouter>
          <Routes>
            <Route path="/" element={<Login/>}/>
            <Route path="/charCreate" element={<CharCreate/>}/>
            <Route path="/auth" element={<Auth/>}/>
          </Routes>
      </NativeRouter>
  );
    
}
 

И ниже приведена кнопка, которая должна перенаправлять с начального Login.js чтобы CharCreate.js:

 <TouchableOpacity onPress = {() => (window.location.href = './charCreate')} style={styles.registerMe}>
 

Любой совет был бы очень, очень признателен.

Ответ №1:

в react native у нас нет местоположения окна, и оно не определено. вы можете увидеть, что мы имеем в объекте window с помощью

 console.log(Object.keys(window))
 

вместо window.местоположение Я предпочитаю использовать useHistory-хук, подобный этому
, проверьте эту ссылку
useHistory