Tôi đang viết mã bằng CoffeeScript vì tôi đã viết React với nó.
Đây là cấu trúc cơ bản.ReactJS: Làm thế nào để truy cập vào refs của thành phần con?
{ div, input } = React.DOM
Outer = React.createClass
render: ->
div { id: 'myApp' },
Inner()
Inner = React.createClass
render: ->
input { id: 'myInput', ref: 'myInput' }
Tôi có một phương pháp toggle
trên lớp Outer của tôi mà được kích hoạt bằng cách nhấn một phím tắt. Nó chuyển sang chế độ hiển thị của ứng dụng của tôi.
Khi ứng dụng của tôi được chuyển từ ẩn sang hiển thị, tôi muốn tập trung vào đầu vào.
Bây giờ các phương pháp chuyển đổi tìm kiếm nhiều hơn hoặc ít hơn như thế này:
Outer = React.createClass
render: ->
......
hide: ->
@setState { visible: no }
show: ->
@setState { visible: yes }
$('#myInput').focus() # jQuery
# I want to do something like
# @refs.myInput.getDOMNode().focus()
# But @refs here is empty, it doesn't contain the refs in Inner
toggle: ->
if @state.visible
@hide()
else
@show()
Làm thế nào để làm được điều này sau đó?
AutoFocus không làm việc cho tôi. Trên thực tế tôi chỉ nghĩ về 'componentDidUpdate' và thử một cái gì đó tương tự như những gì bạn đề nghị và nó làm việc. Nhưng tôi thực sự muốn biết liệu có một cách dễ dàng để truy cập vào refs của các thành phần con. Ví dụ refs trên React Doc đặt một đầu vào bên trong thành phần trên cùng, nhưng trên thực tế các đầu vào thường được lồng trong các thành phần con. – octref
Chỉ có thể sử dụng các tham chiếu trong thành phần mà chúng được xác định. Nếu chúng có thể truy cập được bởi bất kỳ thành phần con nào, bạn phải giả sử tên của bạn cho một ref sẽ không đụng độ với bất kỳ ref nào khác. Bạn cũng sẽ phải kiểm tra mọi thành phần khác nếu bạn muốn loại bỏ một ref, hoặc thay đổi nó. Những giả định và tìm kiếm tất cả các nơi tốt nhất là tránh. – FakeRainBrigand