Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用自定义挂钩更新状态值_Javascript_Reactjs_React Hooks_React Component - Fatal编程技术网

Javascript 无法使用自定义挂钩更新状态值

Javascript 无法使用自定义挂钩更新状态值,javascript,reactjs,react-hooks,react-component,Javascript,Reactjs,React Hooks,React Component,我创建了一个包含四个状态的自定义钩子。然后我将这个钩子导入到两个功能组件中。然后我正在更新第二个组件中的一个状态。但是在第一个组件中,状态没有改变 import React , {useState} from "react" /** Custom hook component **/ const useApp = () => { const[millisec , setMillisec] = useState(0) const[sec , setSec

我创建了一个包含四个状态的自定义钩子。然后我将这个钩子导入到两个功能组件中。然后我正在更新第二个组件中的一个状态。但是在第一个组件中,状态没有改变

import React , {useState} from "react"

/** Custom hook component **/
const useApp = () => {
    const[millisec , setMillisec] = useState(0)
    const[sec , setSec] = useState(0)
    const[min , setMin] = useState(0)
    const[hr , setHr] = useState(0)

    return {millisec , setMillisec , sec , setSec , min , setMin , hr , setHr}
    
}

export default useApp;
/**第一个JS文件**/

import React from "react"
import useApp from "../App"
import Interact from "./Interact";

const Timer = () => {
    
    
    const {millisec  , sec  , min  , hr } = useApp();

    return(
        <>
             <div>{hr}</div>
            <div>{min}</div>
            <div>{sec}</div>
            <div>{millisec}</div>
            <Interact />
        </>
    )
}
export default Timer
从“React”导入React
从“./App”导入useApp
从“/Interact”导入交互;
常量计时器=()=>{
常数{millisec,sec,min,hr}=useApp();
返回(
{hr}
{min}
{sec}
{毫秒}
)
}
导出默认计时器
/**第二个JS文件**/

import React from "react"
import useApp from "../App"


const Interact = () => {

    const {millisec , setMillisec , sec , setSec , min , setMin , hr , setHr} = useApp();

    const handleStart = () => {
        setMillisec(prev => prev +1)
        
    return(
        <>
        <button onClick = {handleStart}>Start</button>
        <p>{millisec}</p>
        </>
    )
}

export default Interact
从“React”导入React
从“./App”导入useApp
常量交互=()=>{
常数{millisec,setMillisec,sec,setSec,min,setMin,hr,setHr}=useApp();
常量handleStart=()=>{
设置毫秒(上一次=>上一次+1)
返回(
开始
{毫秒}

) } 导出默认交互
我可以在第二个.js文件和自定义钩子文件中更改初始状态值
毫秒
,但我想在第一个js文件中更改
毫秒
的值,因为当我单击开始按钮时,状态发生了更改

只需向下传递它:

const Timer = () => {
    const { millisec, setMillisec, sec  , min  , hr} = useApp();

   const handleStart = () => {
       setMillisec(prev => prev + 1)
   }

    return(
        <>
             <div>{hr}</div>
            <div>{min}</div>
            <div>{sec}</div>
            <div>{millisec}</div>
            <Interact handleStart={handleStart} millisec={millisec} />
        </>
    )
}
const Timer=()=>{
常数{millisec,setMillisec,sec,min,hr}=useApp();
常量handleStart=()=>{
设置毫秒(上一次=>上一次+1)
}
返回(
{hr}
{min}
{sec}
{毫秒}
)
}