У меня есть CustomerForm
компонент, как так:React.js как вызвать метод для дочернего компонента через refs?
@CustomerForm = React.createClass
getInitialState: ->
name: ''
street: ''
location: ''
addendum: ''
render: ->
React.DOM.form
className: 'ui form'
React.DOM.div
className: 'field'
React.DOM.label null, 'Name'
React.DOM.input
type: 'text'
name: 'name'
value: @state.name
onChange: @handleChange
React.DOM.div
className: 'field'
React.DOM.label null, 'Address'
React.DOM.div
className: 'three fields'
React.DOM.div
className: 'field'
React.DOM.input
type: 'text'
name: 'street'
placeholder: 'Street'
value: @state.street
onChange: @handleChange
React.DOM.div
className: 'field'
React.DOM.input
type: 'text'
name: 'location'
placeholder: 'Location'
value: @state.location
onChange: @handleChange
React.DOM.div
className: 'field'
React.DOM.input
type: 'text'
name: 'addendum'
placeholder: 'Addendum'
value: @state.street
onChange: @handleChange
handleChange: (e) ->
@setState "#{e.target.name}": e.target.value
valid: ->
@state.name && @state.street && @state.location
Как вы можете видеть, что это предоставляет метод под названием valid()
. У меня также есть CustomerModal
компонент, который является семантико-UI модальный диалог, который делает вид:
@CustomerModal = React.createClass
render: ->
React.DOM.div
className: 'ui active modal'
React.DOM.i className: 'close icon'
React.DOM.div className: 'header', 'Customer'
React.DOM.div
className: 'content'
React.createElement(CustomerForm, ref: 'form')
React.DOM.div className: 'actions',
React.DOM.button
type: 'submit'
disabled: [email protected]()
'Submit'
Как дается semantic-ui's modal markup я хотел бы иметь кнопку отправки на CustomerModal
компонента. Кроме того, я хотел бы, чтобы кнопка отправки была отключена, пока форма недействительна, поэтому вызывает valid()
в компоненте CustomerForm
, потому что сам компонент должен определить, действительно ли это или нет.
Однако, когда я пытаюсь использовать @refs
объект в указанном выше смысле, я всегда получаю ошибку TypeError: this.refs.form is undefined
Я совершенно новой для Ract.js, и это является частью моего опыта обучения с ним в небольшой Rails, используя CoffeeScript.
Спасибо, да, я уже видел эти сокращенные компоненты. Не могли бы вы дать мне пример короткого кода, потому что я полностью потерял здесь ... – Vapire
Если вы хотите вызвать функцию 'valid' от потомка, вы можете передать его в качестве опоры. Я приведу пример через минуту. Я все еще пытаюсь убедиться, что понимаю, что вы хотите сделать. всего мин. –
Так что на самом деле вы должны держаться выше. Вы можете сделать это с помощью ссылок, получив компонент сначала с помощью 'React.findDOMNode', но на самом деле вам нужно переосмыслить, где вы ставите состояние. –