暂不支持在 render() 之外的方法定义 JSX

由于微信小程序的 template 不能动态传值和传入函数,Taro 暂时也没办法支持在类方法中定义 JSX。

规则详情

以下代码会被 ESLint 提示警告,同时在 Taro(小程序端)也不会有效:

  1. class App extends Component {
  2. _render() {
  3. return <View />
  4. }
  5. }
  6. class App extends Component {
  7. renderHeader(showHeader) {
  8. return showHeader && <Header />
  9. }
  10. }
  11. class App extends Component {
  12. renderHeader = (showHeader) => {
  13. return showHeader& & <Header />
  14. }
  15. }

解决方案

render 方法中定义。

  1. class App extends Component {
  2. render () {
  3. const { showHeader, showMain } = this.state
  4. const header = showHeader && <Header />
  5. const main = showMain && <Main />
  6. return (
  7. <View>
  8. {header}
  9. {main}
  10. </View>
  11. )
  12. }
  13. }

当测试用例和线上项目都检测通过时,Taro 将很快(下一个 Minor 版本)支持这一特性。