В React (используя ES6 через babel), я пытаюсь создать статический метод, который обновляет состояние компонента, в котором он содержится. в качестве аргумента. Проблема заключается в том, что «это» никогда не связано с лексической сферой.Как заставить React ES6 статический метод «это» быть привязан к лексической области
static updateList = (Item) => {
this.setState({ cartUpdated: Date.now() }); //setState is not available
}
В другом компоненте ...
<div onClick={Cart.updateList.bind(this,this.props)}>Click</div>
Сначала я думал, что это может быть связано с «этим» прошел через «привязку», но я создал дубликат нестатический метод со стрелкой в компонент, содержащий обработчик кликов, и я мог бы получить доступ к лексическому «этому» просто отлично.
В отчаянии также пытался сделать статический клон setState, но не повезло.
Я предполагаю, что это структурное решение/решение безопасности (если мы пропустим "это" мы просачиваем все!), Но как обращаться с "этим"? Устанавливает ли это ограничение функцию updateList, чтобы сидеть над обновлением и Компонентом с помощью обработчика кликов? Это, конечно, может быть скорее реактивным, но мне любопытно.
"* статический метод, который обновляет состояние компонента, содержащегося в *" - вы не имеете никакого смысла. Статические методы относятся к классу, нет состояния. Вам нужен метод экземпляра? Затем используйте один. – Bergi
Если вы можете предоставить рабочий пример метода, к которому можно получить доступ через экземпляр, когда указанный экземпляр не найден в дочерних или родительских компонентах вызывающего компонента, это было бы фантастическим. –
Что вы подразумеваете под "*, когда указанный экземпляр не найден *"? Я предполагаю, что это ваш экземпляр? – Bergi