Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 useState钩子在setState上渲染整个组件_Javascript_Reactjs_React Native_React Hooks_State - Fatal编程技术网

Javascript useState钩子在setState上渲染整个组件

Javascript useState钩子在setState上渲染整个组件,javascript,reactjs,react-native,react-hooks,state,Javascript,Reactjs,React Native,React Hooks,State,在下面的代码中,我使用了2个“useState”挂钩。每当我调用这些钩子中任何一个的“setState”函数时,整个组件都会重新呈现(检查“console.log”语句)。我想如果我为一个变量调用“setState”,那么只有与该变量相关联的元素应该呈现,而不是整个组件 代码段: const App = () => { const [count, setCount] = React.useState(0) const [count2, setCount2] = React.use

在下面的代码中,我使用了2个“useState”挂钩。每当我调用这些钩子中任何一个的“setState”函数时,整个组件都会重新呈现(检查“console.log”语句)。我想如果我为一个变量调用“setState”,那么只有与该变量相关联的元素应该呈现,而不是整个组件

代码段:

const App = () => {

  const [count, setCount] = React.useState(0)
  const [count2, setCount2] = React.useState(0)

  return (
    <SafeAreaView>
      <TouchableOpacity onPress={() => setCount(count => count + 1)}>
        {console.log('Counter 1')}
        <Text>{count}</Text>
      </TouchableOpacity>
      <TouchableOpacity onPress={() => setCount2(count2 => count2 + 1)}>
        {console.log('Counter 2')}
        <Text>{count2}</Text>
      </TouchableOpacity>
    </SafeAreaView>
  );
};
const-App=()=>{
const[count,setCount]=React.useState(0)
常量[count2,setCount2]=React.useState(0)
返回(
setCount(count=>count+1)}>
{console.log('Counter 1')}
{count}
setCount2(count2=>count2+1)}>
{console.log('Counter 2')}
{count2}
);
};

将每个
文本
呈现在独立组件中。。。这样,每当每个
计数器
组件收到新道具时。。它将重新渲染

 function FirstCounter ({ count }) {
  console.log('FirstCounter', count);
  return (  
    <Text>{count}</Text>
  );
}

export default React.memo(FirstCounter);

function SecondCounter ({ count }) {
  console.log('SecondCounter', count);
  return (  
    <Text>{count}</Text>
  );
}

export default React.memo(SecondCounter);

function App() {
  /** state is it was */
  const [count, setCount] = React.useState(0);
  const [count2, setCount2] = React.useState(0);

  return (
    <SafeAreaView>
      <TouchableOpacity onPress={() => setCount(count => count + 1)}>
        <FirstCounter count={count} />
      </TouchableOpacity>
      <TouchableOpacity onPress={() => setCount2(count2 => count2 + 1)}>
        <SecondCounter count={count2} />
      </TouchableOpacity>
    </SafeAreaView>
  );
}
函数FirstCounter({count}){
console.log('FirstCounter',count);
报税表(
{count}
);
}
导出默认反应备忘录(FirstCounter);
函数SecondCounter({count}){
console.log('SecondCounter',count);
报税表(
{count}
);
}
导出默认反应备忘录(第二计数器);
函数App(){
/**是什么状态*/
const[count,setCount]=React.useState(0);
const[count2,setCount2]=React.useState(0);
返回(
setCount(count=>count+1)}>
setCount2(count2=>count2+1)}>
);
}

将每个
文本
呈现在独立组件中。。。这样,每当每个
计数器
组件收到新道具时。。它将重新渲染

 function FirstCounter ({ count }) {
  console.log('FirstCounter', count);
  return (  
    <Text>{count}</Text>
  );
}

export default React.memo(FirstCounter);

function SecondCounter ({ count }) {
  console.log('SecondCounter', count);
  return (  
    <Text>{count}</Text>
  );
}

export default React.memo(SecondCounter);

function App() {
  /** state is it was */
  const [count, setCount] = React.useState(0);
  const [count2, setCount2] = React.useState(0);

  return (
    <SafeAreaView>
      <TouchableOpacity onPress={() => setCount(count => count + 1)}>
        <FirstCounter count={count} />
      </TouchableOpacity>
      <TouchableOpacity onPress={() => setCount2(count2 => count2 + 1)}>
        <SecondCounter count={count2} />
      </TouchableOpacity>
    </SafeAreaView>
  );
}
函数FirstCounter({count}){
console.log('FirstCounter',count);
报税表(
{count}
);
}
导出默认反应备忘录(FirstCounter);
函数SecondCounter({count}){
console.log('SecondCounter',count);
报税表(
{count}
);
}
导出默认反应备忘录(第二计数器);
函数App(){
/**是什么状态*/
const[count,setCount]=React.useState(0);
const[count2,setCount2]=React.useState(0);
返回(
setCount(count=>count+1)}>
setCount2(count2=>count2+1)}>
);
}

应答中存储的状态在哪里?此外,组件将重新渲染为其父组件渲染签出编辑…@我看到它是React.memo,因此仅当道具更改时,子组件才会重新渲染答案中存储的状态是什么?此外,组件将重新渲染为其父组件渲染签出编辑…@我看到它在那里是React.memo,因此只有在更改道具时才会重新渲染子组件-使用useMemo@AbuDujanaMahalail,你能再解释一下吗。谢谢使用useMemo@AbuDujanaMahalail,你能再解释一下吗。谢谢