我在youtube视频中找到了此代码,该视频中App.js中的计数器是全局的,并且通过在按钮的click事件上传递一个函数来控制app.js中的计数器并由app组件中的按钮以及其他组件中的按钮控制动作
//code for Child component
import { CountContext } from "../App";
function ComponentA() {
const countContext = useContext(CountContext);
// const display = () => {
// // countContext.countState();
// console.log("comp a", countContext.countSState("increment"));
// };
return (
<div>
Component A {countContext.countState}
<button onClick={() => countContext.countDispatch("increment")}>
Increment
</button>
<button onClick={() => countContext.countDispatch("decrement")}>
Decrement
</button>
<button onClick={() => countContext.countDispatch("reset")}>Reset</button>
<button onClick={display}>Acessing the app state</button>
</div>
);
}
//code for App.js
export const CountContext = React.createContext();
function App() {
const [count, dispatch] = useReducer(reducer, initialState);
const incFunc = () => {
dispatch("increment");
console.log("dispatch", count);
console.log("dispatched", dispatch);
};
return (
<CountContext.Provider value={{ countState: count, countDispatch: dispatch }}>
<div className="App">
<CounterOne />
<CounterTwo />
<CounterThree />
{count}
<button onClick={incFunc}>Inc</button>
<ComponentA />
<ComponentB />
<ComponentC />
<DataFetchingOne />
<DataFetchingTwo />
</div>
</CountContext.Provider>
);
}
子组件中的注释显示功能是我在访问初始状态的代码中进行的编辑,我试图在名为“访问应用程序状态”的最后一个按钮中调用此功能,但未打印任何内容在控制台上,当我单击此按钮时。我想访问子组件中应用程序组件的inFunc 中正在更新的计数值。我不知道该怎么做。
答案 0 :(得分:0)
package com.amazonaws.lambda.userlayertest;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import customlayer.DataHandler;
public class LambdaFunctionHandler implements RequestHandler<RequestObject, String> {
@Override
public String handleRequest(RequestObject input, Context context) {
System.out.println("call to layer");
DataHandler dataHandler = new DataHandler();
String data = dataHandler.getData(input.getBody());
return data;
}
}
console.log("comp a", countContext.countState);
不是函数。另外,您在控制台日志中有一个错字。
工作示例:https://codesandbox.io/s/peaceful-violet-01e3x
24小时后,我将删除此示例。