如何通过上下文从ShoppingBasketProvider组件传递addToCard函数以在另一个组件中运行它?在组件中使用上下文将功能保留在组件中的正确性如何。谢谢您的帮助。
我有一个组件:
export const ShoppingBasketContext = React.createContext();
export default class ShoppingBasketProvider extends Component {
addToCard = (event) => {
console.log(event);
}
render() {
const { shoppingBasketItems } = `this.state`;
return (
<ShoppingBasketContext.Provider
value={{
shoppingBasketItems,
}}>
{this.props.children}
</ShoppingBasketContext.Provider>
)
}
}
答案 0 :(得分:1)
您可以将函数作为值传递给Context provider。
export const ShoppingBasketContext = React.createContext();
export default class ShoppingBasketProvider extends Component {
addToCard = (event) => {
console.log(event);
}
render() {
const { shoppingBasketItems } = `this.state`;
return (
<ShoppingBasketContext.Provider
value={{
shoppingBasketItems,
addToCard: this.addToCard
}}>
{this.props.children}
</ShoppingBasketContext.Provider>
)
}
}
您可以将函数保留在ContextProvider中,并允许其他组件从上下文中使用该函数并对其进行调用。
答案 1 :(得分:1)
Context API是一个提供程序,通过它我们可以在组件之间共享数据。显然,我们可以通过类似的方式传递函数:
value={{
shoppingBasketItems,
addToCard: this.addToCard
}}
但是我不建议您采用这种方法。取而代之的是,您可以拥有一个单独的文件Util.js
,并在其中导出所需的函数,并且可以在任何需要的地方使用该文件:
Util.js
export const required_function = () => {
//...
}
Component.js
import { required_function } from 'Util'
//... required_function() ...