Javascript 将React组件作为对象值返回,并将道具绑定到该组件

Javascript 将React组件作为对象值返回,并将道具绑定到该组件,javascript,reactjs,Javascript,Reactjs,有一个全局钩子在使用时返回react组件: const{SomeComponent1,SomeComponent2}=useHook({prop1,prop2}) 如何将道具传递给从挂钩返回的组件 constusehook=({prop1,prop2})=>{ 返回{ SomeComponent1,//您可以将组件创建为功能组件,并在useHook中使用useMemo,以防止在每次渲染时重新安装组件 const useHook = ({ prop1, prop2 }) => { c

有一个全局钩子在使用时返回react组件:

const{SomeComponent1,SomeComponent2}=useHook({prop1,prop2})
如何将道具传递给从挂钩返回的组件

constusehook=({prop1,prop2})=>{
返回{

SomeComponent1,//您可以将组件创建为功能组件,并在useHook中使用
useMemo
,以防止在每次渲染时重新安装组件

const useHook = ({ prop1, prop2 }) => {

  const SomeComponent1Wrap = useMemo(() => ( ) => {
     return <SomeComponent1 prop={prop1} />
  }, [props1]);

  const SomeComponent2Wrap = useMemo(() => ( ) => {
     return <SomeComponent2 prop={prop2} />
  }, [props2]);

  return {
    SomeComponent1: SomeComponent1Wrap, 
    SomeComponent2: SomeComponent2Wrap,
  }
}
constusehook=({prop1,prop2})=>{
const SomeComponent1Wrap=useMemo(()=>()=>{
返回
},[props1]);
const SomeComponent2Wrap=useMemo(()=>()=>{
返回
},[props2]);
返回{
SomeComponent1:SomeComponent1包装,
SomeComponent2:SomeComponent2Wrap,
}
}

您可以将组件创建为功能组件,并在useHook中使用
useMemo
,以防止在每个渲染上重新安装组件

const useHook = ({ prop1, prop2 }) => {

  const SomeComponent1Wrap = useMemo(() => ( ) => {
     return <SomeComponent1 prop={prop1} />
  }, [props1]);

  const SomeComponent2Wrap = useMemo(() => ( ) => {
     return <SomeComponent2 prop={prop2} />
  }, [props2]);

  return {
    SomeComponent1: SomeComponent1Wrap, 
    SomeComponent2: SomeComponent2Wrap,
  }
}
constusehook=({prop1,prop2})=>{
const SomeComponent1Wrap=useMemo(()=>()=>{
返回
},[props1]);
const SomeComponent2Wrap=useMemo(()=>()=>{
返回
},[props2]);
返回{
SomeComponent1:SomeComponent1包装,
SomeComponent2:SomeComponent2Wrap,
}
}

最常见、最优雅的解决方案是基于条件的渲染。您可以使用基于三值的操作符来显示组件,例如

import React,{useState} from "react";
import {Comp1} from "./comp1"; 
import {Comp2} from "./comp2"; 
function Test(){
    const [display,setDisplay] = useState(true);
    render(){
        <>
            {display ? <Comp1 props={props} /> : <Comp2 props={props} /> }
        </>
    }
}
import React,{useState}来自“React”;
从“/Comp1”导入{Comp1}”;
从“/Comp2”导入{Comp2};
功能测试(){
const[display,setDisplay]=使用状态(true);
render(){
{显示?:}
}
}

最常见、最优雅的解决方案是基于条件的渲染。您可以使用基于三值的操作符来显示组件,例如

import React,{useState} from "react";
import {Comp1} from "./comp1"; 
import {Comp2} from "./comp2"; 
function Test(){
    const [display,setDisplay] = useState(true);
    render(){
        <>
            {display ? <Comp1 props={props} /> : <Comp2 props={props} /> }
        </>
    }
}
import React,{useState}来自“React”;
从“/Comp1”导入{Comp1}”;
从“/Comp2”导入{Comp2};
功能测试(){
const[display,setDisplay]=使用状态(true);
render(){
{显示?:}
}
}

我想你误解了这个问题。这不是我的意思。我想你误解了这个问题。这不是我想要的