Что означает "компоненты функции без гражданства не могут быть даны"?
У меня есть это:
const ProjectsSummaryLayout = ({projects}) => {
return (
<div className="projects-summary col-md-10">
<h3>Projects</h3>
<ul>
{ projects.map(p => <li key={p.id}>{p.contract.client}</li>) }
</ul>
</div>
)
}
const ProjectsSummary = connect(
state => ({projects: state.projects})
)(ProjectsSummaryLayout)
и я получаю:
Предупреждение. Компонентам функции stateless не могут быть предоставлены refs (см. ref "wrappedInstance" в ProjectsSummaryLayout, созданный Connect (ProjectsSummaryLayout)). Попытки получить доступ к этой ссылке будут потерпеть неудачу.
Что он пытается сказать мне? Действительно ли я делаю что-то неправильно?
Я вижу обсуждение этого здесь, но, к сожалению, я просто не понимаю заключения.
Ответы
Ответ 1
В реакторе refs
не может быть привязан к компоненту без гражданства.
Как я понимаю, React Redux 3 прикрепляет ref
к компоненту, который вы даете ему независимо от того, является ли он безстоящим. Предупреждение, которое вы видите, происходит от React, потому что внутри React Redux 3 прикрепляет ref
к предоставленному вам компоненту без состояния (ProjectsSummaryLayout
).
Вы не делаете ничего плохого и, согласно этому комментарию GitHub, вы можете смело игнорировать предупреждение.
В React Redux 4 к обернутому компоненту по умолчанию добавлен ref
, что означает, что если вы обновляете до React Redux 4, предупреждение должно исчезнуть.