【问题标题】:how do i generate a line break inside a loop in react?我如何在反应循环中生成换行符?
【发布时间】:2017-06-01 23:30:11
【问题描述】:

我有一个需要分成几行的反应组件。我猜它会在循环返回中生成 4-5 盒 li。我想要做的是在上面放 2 个盒子,然后在下面放 3 个盒子。因此,如果有 4 个盒子,它们将 2x2 堆叠在一起。如果有 5 个,则顶部 2 个,底部 3 个。

所以问题是,如何在 react 的循环返回中生成换行符?

代码:

import React from 'react'
import classnames from 'classnames'

export default class Tile extends React.Component {
 constructor( props ) {
  super( props )
}

componentWillAppear( done ) {
// let rotateZ = `rotateZ( ${ ~~( ( Math.random() * -20 ) + 
Math.random() * 40 ) }deg )`
// let rotateX = `rotateX( ${ ~~( Math.random() * 80 ) }deg )`
// let scale = `scale( ${ .65 + Math.random() * .25 } )`
// let initialTransform = {
//   transform: `${ rotateZ } ${ rotateX } ${ scale }`
// }
// this.refs.container.style.transform = `${ rotateZ } ${ rotateX } ${ 
scale }`

this.refs.container.classList.add( 'Tile--isAppearing' )
done()
}

componentDidAppear() {
setTimeout( () => {
  // set visible and clear jitter
  this.refs.container.classList.remove( 'Tile--isAppearing' )
  this.refs.container.style.transform= ''
}, Math.random() * ( this.props.number * 250 ) )
}

onClick = event => {
const { id, value } = this.props
this.props.onClick( id, value )
}

render() {
// Add matrix jitter

let classes = classnames({
  'Tile': true,
  'Tile--isSelected': this.props.selected
})

return (

  <li ref="container" className={ classes } onClick={ this.onClick }>
    <span className="Tile-content">{ this.props.text }</span>
  </li>

)
  }
}

请求的第二组代码:

render() {
let tiles = this.props.slide.answers
  .map( ( answer, index ) => {
    let id = 'answer' + index
    return <Tile
      key={ id }
      id={ id }
      value={ answer.value }
      text={ answer.text }
      selected={ this.selected.has( id ) }
      onClick={ this.onTileClick }
    />
  })

 let buttonClasses = classnames( 'Btn', 'Btn--isOrange', 'Btn--
 isContinue', {
  'u-transparent': !this.state.complete
})

   return (
  <div ref="main" className="js-main State">
    <p className="Question-Body">
      { this.props.slide.body }
    </p>
    <TransitionGroup { ...transitionProps } >
      { tiles }
    </TransitionGroup>
    <button ref="continue" className={ buttonClasses } onClick={ 
  this.onContinue }>{ this.props.slide.continue }</button>
  </div>
  )
  }

【问题讨论】:

  • 您能展示一下您现在正在使用的代码吗?
  • 你能显示一些代码吗?
  • 添加了代码。我没有反应大师,所以我对上述含义知之甚少。
  • 我们需要父组件的代码,即渲染&lt;Tile /&gt;实例的代码。
  • 我不知道你指的是什么。

标签: javascript css reactjs


【解决方案1】:

需要手动插入换行符:

let tiles = this.props.slide.answers
  .map( ( answer, index ) => {
    let id = 'answer' + index
    let tile = <Tile
      key={ id }
      id={ id }
      value={ answer.value }
      text={ answer.text }
      selected={ this.selected.has( id ) }
      onClick={ this.onTileClick }
    />
    return index == 1 ? [tile, <br/>] : tile;
  })

这会将[tile, tile, tile, tile] 变成[tile, [tile, &lt;br/&gt;], tile, tile]

【讨论】:

  • 这是一个很棒的答案,非常感谢。像魅力一样工作。你们太棒了,非常爱。
猜你喜欢
  • 2012-02-28
  • 1970-01-01
  • 2021-10-06
  • 2018-02-02
  • 2016-12-20
  • 1970-01-01
  • 2021-05-01
  • 2010-09-11
  • 2018-05-16
相关资源
最近更新 更多