Каков метод мутации контекста в дочернем компоненте функции?
Я прочитал пост Мутирующий контекст от детей , в котором объясняется, как это сделать с помощью простогообработчик события.то есть:
<MyContext.Consumer>
<button onClick={() => setCount(count + 1)}>parent button +1</button>
</MyContext.Consumer>
Но вместо этого я хотел бы обновить функцию родительского компонента (используя контекст) в функции дочерних компонентов.
Это возможно, передав эту функцию какобратный звонок.
public anotherFunction(count, setCount) {
// use the setCount here
setCount(count + 1)
}
public handleClick(setCount) {
// ..do some stuff to get the count
let count = 10;
this.anotherFunction(count, setCount);
}
render() {
return(
<MyContext.Consumer>
<button onClick={() => this.handleClick(setCount)}>parent button +1</button>
</MyContext.Consumer>
)
}
Теперь этот пример работает.Однако необходимость проходить через функцию setCount
во всех функциях кажется посторонней.Возможно ли что-то похожее на это?
public anotherFunction(count) {
// perhaps something like this:
this.context.setCount(count + 1) // <- this doesn't work..
}
public handleClick() {
// ..do some stuff to get the count
let count = 10;
this.anotherFunction(count);
}
render() {
return(
<MyContext.Consumer>
<button onClick={() => this.handleClick()}>parent button +1</button>
</MyContext.Consumer>
)
}
Есть ли другой лучший способ сделать это?
Я создал песочницу, чтобы более наглядно продемонстрировать пример использования в функции:
https://codesandbox.io/embed/suspicious-jackson-y3tk4?fontsize=14&module=%2Fsrc%2FMyForm.tsx