我正在尝试了解 React 上下文 API,并且正在阅读官方文档。如果有人可以对以下几点进行更多说明,我将不胜感激,因为官方文档没有明确说明。
上下文提供者.js
import React from "react";
import {ContextConsumer} from "./ContextConsumer";
export const TestContext = React.createContext({
count: 1,
incrCount: (count)=>{
console.log(`count value :- ${count}`)
}
});
export class ContextProvider extends React.Component {
incrCount = () => {
this.setState({
count: this.state.count + 1,
});
};
state = {
count: 5,
incrCount: this.incrCount,
};
render() { …Run Code Online (Sandbox Code Playgroud) 我有一个上下文,我将其导入到我的功能组件中:
import { TaskContexts } from "../../../contexts";
Run Code Online (Sandbox Code Playgroud)
上下文存储数据和函数。
数据来自上下文并显示在站点上。
const {
editTodo,
setEditID,
toggleTodoCompletion,
editID,
editTodoHandler,
removeTodo,
state,
text,
isEditError,
} = useContext(TaskContexts);
Run Code Online (Sandbox Code Playgroud)
但!
<button onClick={() => editTodo(todo.id)}>
<img src={editIcon} alt="edit button"></img>
</button>
Run Code Online (Sandbox Code Playgroud)
当我尝试调用 editTodo 函数时,它失败并出现以下错误:
Uncaught TypeError: editTodo is not a function
Run Code Online (Sandbox Code Playgroud)
如何修复这个错误?
UPD。
完整组件代码
import React, { useState } from 'react';
import ACTION_TYPES from '../ToDo/reducer/actionTypes';
import RenderedTable from './RenderedTable';
import styles from './TaskList.module.scss';
import allIcon from '../../icons/all.svg';
import completedIcon from '../../icons/completed.svg';
import notCompletedIcon from '../../icons/notCompleted.svg';
import mona from …Run Code Online (Sandbox Code Playgroud)