React делает бессмысленный div, нарушая мой стиль flexbox - PullRequest
2 голосов
/ 10 апреля 2019

Я знаком с React Native, но не так много с ReactJS. У меня проблема со стилем: я модифицирую эту библиотеку для хобби-проекта: https://github.com/rcdexta/react-trello, и код, который меня интересует, выглядит следующим образом:

// Render Method
return (
    <BoardDiv style={style} {...otherProps} draggable={false}>
      <UpdateModal
        isOpen={this.state.isOpen}
        onClick={this.closeModal.bind(this)}
        card={this.state.card}
        onRequestClose={this.closeModal}/>
      <PopoverWrapper>
        <Container
          orientation="horizontal"
          onDragStart={this.onDragStart}
          dragClass={laneDragClass}
          dropClass=""
          onDrop={this.onLaneDrop}
          lockAxis="x"
          getChildPayload={index => this.getLaneDetails(index)}
          groupName={this.groupName}>
          {reducerData.lanes.map((lane, index) => {
            const {id, droppable, ...otherProps} = lane
            const laneToRender = (
              <Lane
                key={id}
                boardId={this.groupName}
                id={id}
                getCardDetails={this.getCardDetails}
                onCardClick={(cardId, metadata, laneId) => {
                  const allCards = [].concat(...this.props.reducerData.lanes.map((lane) => lane.cards))
                  const cardData = allCards.filter((e) => e.id === cardId)[0]
                  this.modifyCardTitle(cardData)
                }}
                index={index}
                droppable={droppable === undefined ? true : droppable}
                {...otherProps}
                {...passthroughProps}
              />
            )
            return draggable && laneDraggable ? <Draggable key={lane.id}>{laneToRender}</Draggable> :
              <span key={lane.id}>{laneToRender}</span>
          })}
        </Container>
      </PopoverWrapper>
      {canAddLanes && (
        <Container orientation="horizontal">
          {editable && !addLaneMode ? (
            <LaneSection style={{width: 200}}>
              <NewLaneButton onClick={this.showEditableLane}>{addLaneTitle}</NewLaneButton>
            </LaneSection>
          ) : (
            addLaneMode && this.renderNewLane()
          )}
        </Container>
      )}
    </BoardDiv>
)

Однако рендеринг выглядит так:

<div class="react-trello-board sc-bdVaJa eBPLjG" data="[object Object]" draggable="false">
  <div> <!--The problem-->
    <div class="smooth-dnd-container horizontal">
        <section title="will_apply" draggable="false" class="react-trello-board sc-htpNat dJewwL"
                 style="width: 25%;">
        </section>
    </div>
</div>

Моя проблема заключается в следующем: я понятия не имею, почему React создал div, помеченный как проблема (см. Фрагмент выше), и он нарушает мой «рабочий процесс flexbox», поскольку display: flex не распространяется через него (он отображает block) ,

Какие у меня варианты?

Должен ли я переопределить и стилизовать все мои div с, скажем, display: flex; flex:1? Могу ли я увидеть, где и почему был создан этот div?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Дополнительные div поступают из PopoverWrapper, здесь .

Библиотека предоставляет 2 способа оформления, как уже упоминалось здесь . Если это не отвечает вашим потребностям, вам нужно изменить код, чтобы передать классы или стили требуемым элементам DOM, которые вы хотите стилизовать.

0 голосов
/ 10 апреля 2019

Может быть, вы можете использовать что-то подобное, чтобы избежать ненужного div:

<React.Fragment>
 <YourComponent />
 // ... Or the component content
</React.Fragment>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...