Как отобразить переменную в React Navbar?

#javascript #html #reactjs #navbar #react-bootstrap

#javascript #HTML #reactjs #панель навигации #react-bootstrap

Вопрос:

Как я могу отобразить переменную temp внутри <Navbar.Text> ? Использование $ или «$» не работает и просто показывает строку

Нужно ли мне иметь функцию поиска погоды внутри панели навигации, нужно ли мне делать больше ссылок? Я новичок в веб-разработке, поэтому прошу прощения, если это что-то очевидное.

 imports...
...

weather.find({degreeType: 'F',search: ''}, function(err, result) {
  if(err) console.log(err);
  //console.log(result[0].current.feelslike)

  const temp = result[0].current.feelslike
});

export default function NavBar (){
  const [show, setShow] = useState(false)
  const handleClose = () => setShow(false);
  const handleShow = () => setShow(true);
    return(
      
      <Navbar collapseOnSelect expand="lg" bg="dark" variant="dark">
         <Navbar.Brand as={NavLink} to= '/' className={"px-3"}>
           <h4 className={"fontSize4"}>Home</h4>
         </Navbar.Brand>
         <Navbar.Toggle aria-controls="responsive-navbar-nav" />
         <Navbar.Collapse id="responsive-navbar-nav">
            <Nav className="mr-auto">
              <NavDropdown title= "Tools" className={"px-3 h3"} id="collasible-nav-dropdown">
...
...
...

              <Navbar.Text>
                "$temp"
              </Navbar.Text>
         </Navbar>
    );
  
}
  

Спасибо

Комментарии:

1. Откуда берется функция погоды? Это вызов API?

Ответ №1:

Временная переменная должна быть заключена в квадратные скобки и объявлена в той же области, в которой она используется. Прямо сейчас единственное, что имеет доступ к переменной temp, — это любой код, который вы помещаете после const temp = result[0].current .похоже.

Что вам нужно сделать, это переместить weather.find() в класс NavBar (как вы упомянули в комментарии) и создать новый хук для переменной temp, чтобы ее можно было обновить. Использование перехвата вместо объявления переменной позволяет React изменять переменную всякий раз, когда она отображается.

 export default function NavBar (){
  ... other code
  const [temp, setTemp] = useState(0);

  weather.find({degreeType: 'F',search: ''}, function(err, result) {
    if(err) console.log(err);
    setTemp(result[0].current.feelslike)
  });
    return(
      ... other code
      {temp}
      ... other code
    );
}
  

Еще одна вещь, на которую следует обратить внимание:

Всякий раз, когда вы устанавливаете атрибут className, вам не нужно заключать имя класса в квадратные скобки. Нужны только кавычки.

 className="nameOfCSSClass"
  

Если вы хотите, чтобы кнопка home имела размер шрифта 4 (что действительно мало), вы также можете сделать что-то вроде этого:

 <p style={{fontSize: 4}}>Home</p>
  

или просто удалите атрибут className все вместе, потому что тег h4 сделает шрифт нужного вам размера.

Комментарии:

1. Спасибо, это сработало! Но проблема сейчас в том, что temp является пустой строкой в любое время после поиска. функция погоды выполнена, мне удалось поставить погоду. найдите внутри функции NavBar, но после этого temp по-прежнему остается пустым