nenhum recuo html / jsx no modo jsx


8

Por alguma razão, o html / jsx nos meus arquivos de origem de reação sempre quer recuar da seguinte maneira, ou seja, quase não há recuo:

return (
  <DateRangePicker ranges={this.state.ranges} startDate={this.state.startDate} endDate={this.state.endDate}
  onApply={this.applyEvent}>
    <Button className="selected-date-range-btn" style={{width : '250px'}}>
    <div className="pull-left">
    <Glyphicon glyph="calendar"/>
    </div>
    <div className="pull-right"><span>{label}</span></div>
    </Button>
  </DateRangePicker>
)

O que eu realmente gostaria é algo como o seguinte:

<DateRangePicker ranges={this.state.ranges} startDate={this.state.startDate} endDate={this.state.endDate}
             onApply={this.applyEvent}>
    <Button className="selected-date-range-btn" style={{width : '250px'}}>
        <div className="pull-left">
            <Glyphicon glyph="calendar"/>
        </div>
        <div className="pull-right"><span>{label}</span></div>
    </Button>
</DateRangePicker>

Esse é o recuo que recebo quando copio o html / jsx no buffer de rascunho com o modo html ou o modo web ativado. Como você pode ver, o recuo é muito mais legível e funciona assim, se eu uso o modo html ou o modo web.

Como posso fazer com que meus arquivos de origem de reação indentem o html / jsx assim?


Qual é a extensão do seu arquivo?
Fxbois

Eu testei-o com os js extensões e .jsx
flooose

com .jsx, deve estar tudo bem. Tem certeza de que você associou arquivos .jsx ao modo web (como mostrado em web-mode.org )?
Fxbois

a questão é sobre o modo jsx e não o modo web.
Flooose

Respostas:


10

Esse é um problema conhecido e, a partir de agora, não foi corrigido. Eu decidi renunciar jsx-modepor esse motivo e apenas usar web-mode. Ele suporta JSX e é mais adequado para arquivos de conteúdo misto.

Desde que eu fazer o trabalho em vários projetos que não têm todos a mesma convenção de usar o .jsxfim para arquivos JSX (alguns simplesmente usar .jsterminações), eu também tenho implementado o seguinte truque para definir o web-mode-content-typeque jsx, quando é "javascript". Isso tem a conseqüência de que todos os arquivos javascript são considerados JSX, mas espero que isso não tenha consequências negativas.

(add-hook 'web-mode-hook
      (lambda ()
        ;; short circuit js mode and just do everything in jsx-mode
        (if (equal web-mode-content-type "javascript")
            (web-mode-set-content-type "jsx")
          (message "now set to: %s" web-mode-content-type))))

11
Muito obrigado, esse foi um grande problema no emacs com o qual você me ajudou.
Tirou

8

Para sua informação, para qualquer pessoa que se depare com esse problema, isso ocorre porque este projeto no modo jsx não foi feito para editar os modelos React JSX do Facebook, mas sim nessa outra linguagem javascript compilada também chamada JSX .

Ter o mesmo nome que os modelos React é inteiramente coincidência.

É por isso que o primeiro commit desse repo foi de 4 anos (pré-datando o JSX do Facebook e o React por anos) e o último commit desse repo foi em 2013 (também pré-datado do React).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.