Объекты недопустимы в качестве реагирующей дочерней ошибки. Найден объект с ключами () - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь написать метод для динамического рендеринга кнопок и пытаюсь избежать повторения кода с помощью метода renderButton. Я не могу найти твердого решения этой проблемы, кто-нибудь может помочь? Я довольно новый, чтобы реагировать на родной

enter image description here

   export default class DialogBoxStory extends PureComponent {
  state = { isVisible: false, type: 'confirm' }

  hide (type) {
    return (payload = '') => {
      this.setState({ isVisible: false })
      console.debug(`hide ${type}`, payload)
    }
  }

  show (type) {
    return (payload) => {
      this.setState({ isVisible: true, type })
      console.debug(`show ${type}`, payload)
    }
  }

  renderButtons () {
    return [ 'confirm', 'alert', 'input' ]
      .map((type) => (
        <Button
          title={`show ${type} dialog`}
          type="primary"
          onPress={this.show(type)}
        />
      ))
  }


  render () {
    const options = {
      title: text('title', 'Test Title', 'props'),
      message: text('message', lorem, 'props'),
      onOkPress: this.hide('onOkPress'),
      onCancelPress: this.hide('onCancelPress'),
      isVisible: this.state.isVisible,
      type: this.state.type,
      onRequestClose: this.hide('onRequestClose'),
    }

    return (
      <Fragment>
        <DialogBox {...options} />
        {this.renderButtons}
      </Fragment>
    )
  }
}

1 Ответ

0 голосов
/ 05 сентября 2018
  • Преобразуйте все объявления ваших методов (функций) в функцию-стрелку, например show = () => {Your Function Body}

  • Вы должны вызвать функцию renderButtons {this.renderButtons()}

  • Также эта часть кода onPress={this.show(type)} должна использовать метод bind() и передать ключевое слово this в качестве первого параметра onPress={this.show.bind(this, type)}

Подробнее о методе bind ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...