React Custom Built Navbar

У меня есть настраиваемое меню навигации, которое я хочу использовать для веб-сайта в ответ, который я создаю, я хочу, чтобы навигационные ссылки перемещались при нажатии на меню навигации.

Есть несколько частей, которые я автоматически считаю неправильными, например, где я передаю реквизит.

Примечание. Я использую стилизованные компоненты в этом проекте, поэтому все, что имеет стиль в названии, связано со стилизованными компонентами, также основная причина, по которой я хочу, чтобы компоненты были разделены с помощью navItem, заключается в том, чтобы я мог управлять ими по-разному с помощью CSS.

Я подумал, что было бы лучше связать все файлы, с которыми я работаю, начиная с Navlink: -

import React, { Component } from "react";
import NavItemStyle from "./NavItemStyle";

class NavItem extends Component {
  render() {
    return (
      <NavItemStyle>
        <ul onClick = {this.props.click}>
          <li value = {this.props.nav}>
          </li>
          <li value = {this.props.children}>
          </li>
        </ul>
      </NavItemStyle>
    );
  }
}
export default NavItem;

Это раздел NavItems, я предполагаю, что это совершенно неверно.

import React, { Component } from "react";
import NavItem from './NavItem/NavItem';

class NavItems extends Component {

  render() {

    return this.props.navlists.map((navItem) => {
      return <NavItem
          click = {() => this.props.clicked}
        />
    });
  }
}
export default NavItems;

Это основной компонент навигации, который будет связан в приложении.

import React, {Component} from "react";
import NavMenu from "./NavMenu/NavMenu";
import NavItem from './NavLists/NavItem/NavItem';
import NavStyle from './NavStyle';

class Navigation extends Component {
  constructor(props) {
    super(props);
    this.state = {
      showMenu: false
    }
  }

  handleClick() {
    this.setState({showMenu: !this.state.showMenu})
  }
  render() {


  return (
    <NavStyle>
      <NavMenu/>
      {/*Nav items Display Home and Things to do.*/}
      <NavItem />
      <NavItem />
    </NavStyle>
  );
}
}


export default Navigation;

Также, чтобы сохранить вставку множества строк кода, я поместил NavMenu (Burger) в корзину для вставки здесь: - https://pastebin.com/T671GBjF

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

Что не работает? Вы можете поделиться? Я могу предположить, что щелчок не работает, так как вам нужно передать функцию, не создавая новую функцию. В NavItems измените click to click = {this.props.clicked}

Daniel Stoyanoff 04.06.2018 21:14

Могу поделиться репо, если это поможет? кроме собственно настраиваемой навигации, созданной в CSS и Svg, больше ничего не работает.

user2917521 04.06.2018 21:17

Пожалуйста, поделитесь тем, что вы ожидаете от кода, но он не работает.

Daniel Stoyanoff 04.06.2018 21:22

Я хочу, чтобы в меню гамбургера отображались элементы при нажатии, поэтому допустим, что страница профиля: «Главная», «О программе» и т. д. - это первый шаг, поэтому на данный момент он будет по умолчанию и перемещен влево.

user2917521 04.06.2018 21:26

Вы можете поделиться репо? Мне не хватает кода, и я не уверен, как именно он должен работать.

Daniel Stoyanoff 05.06.2018 07:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
5
77
1

Ответы 1

Да, вы неправильно передаете реквизит. На самом деле вы их вообще не проходите.

Чтобы использовать опоры в дочернем компоненте, вам необходимо передать их от родительского. Итак, в классе навигации вам нужно будет сделать что-то вроде:

<NavItem click = {this.handleClick} nav = {this.somethingItsNotClearForMe}>
   This text would be props.children on the NavItem
</NavItem>

Я думаю, вам нужно понять эту логику передачи реквизита от родителя к потомку, прежде чем идти дальше.

В разделе Nav, как я могу это сделать, а затем присвоить ему состояние, чтобы оно отображало имя?

user2917521 04.06.2018 21:54

Вы можете сделать что-то вроде <NavItem click = {this.handleClick} name = "Name of item" /> и для дочернего элемента <li onClick = {this.props.click}> {this.props.name} </li>

Margarida Dinis 04.06.2018 22:40

Другие вопросы по теме