ts如何使用props.children

时间:2019-09-26 11:13:33

标签: reactjs typescript react-hooks

我是打字稿的新手,我尝试正确使用props.children和打字稿,但出现错误。

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]

这是props.children的错误: 无法调用可能为'null'或'undefined'的对象。

我使用此技巧来解决它:

interface IFetcher {
  url: string;
}

const Fetcher: React.FC<IFetcher> = props => {
  const [data, setData] = useState<Array<{}>>();
  const [isLoading, setLoading] = useState<boolean>(false);
  const [error, setError] = useState<string>("");

  useEffect(() => {...})

  return props.children(data, error, isLoading);
};

但是我还有另一个错误:

该表达式不可调用。   没有'string类型的组成部分|编号真实| {} | ReactElement ReactElement组件)> | null)| (新(属性:任意)=>组件)> | ReactNodeArray |可调用ReactPortal。

我需要帮助以使用好方法plz。

编辑 我找到了此解决方案:

interface IFetcher {
  url: string;
}

const Fetcher: React.FC<IFetcher> = props => {
  const [data, setData] = useState<Array<{}>>();
  const [isLoading, setLoading] = useState<boolean>(false);
  const [error, setError] = useState<string>("");

  useEffect(() => {...})

  return props.children && props.children(data, error, isLoading);
};

当我定义孩子时,我现在没有错误,但这是正确的解决方案吗?

1 个答案:

答案 0 :(得分:2)

当您尝试调用儿童道具作为功能时,必须确保儿童存在。为了让您对孩子进行类型检查,您需要在界面中提供

  var opt = driver.FindElement(By.XPath("/html/body/div[7]/div[2]/div/div[2]/span/span/span[1]"));
var selectElement = new SelectElement(opt);
System.Threading.Thread.Sleep(12000);
selectElement.SelectByText("ABN MRI");