如何在React JSX中处理long className?

YPC*_*ble 5 javascript jsx eslint react-jsx

假设我在React JSX中呈现此组件:

render() {
  return (
    <h1 className="col-xs-6 col-xs-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5">Some text</h1>
  );
}
Run Code Online (Sandbox Code Playgroud)

这些类触发我的JS linter作为一条太长的行,而且很难阅读.如何className在不破坏JSX语法或在JS linter中触发不同错误的情况下将React组件中的long 属性分成多行?(我正在使用ESLint).

Ima*_*eem 7

另一种 Cleaner 方法是将 classNames 存储在一个数组中并加入它们。

render() { const classNames = ['col-xs-6', 'col-xs-offset-3', 'col-md-4', 'col-md-offset-4', 'col-lg-2', 'col-lg-offset-5'] return ( <h1 className={classNames.join(' ')}>Some text</h1> ); }


Leo*_*etz 5

我通常只是将字符串包装成多行并连接它们.不要忘记在字符串的结尾或开头添加空格.

所以对于你的例子,它将是:

render() {
 return (
  <h1 className={
   'col-xs-6 ' +
   'col-xs-offset-3 ' +
   'col-md-4 ' +
   'col-md-offset-4 ' +
   'col-lg-2 ' +
   'col-lg-offset-5'}>Some text</h1>
 );
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以更轻松地扫描已设置的classNames.

对于一些最佳实践编码模式,以及它们各自的ESLint或JSCS选项,这是一个很好的资源.

  • 您的代码将无法工作,因为类之间没有空格。您刚刚创建了一个不带空格的长字符串。 (2认同)