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 如何通过异步函数创建动态href?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何通过异步函数创建动态href?

Javascript 如何通过异步函数创建动态href?,javascript,reactjs,Javascript,Reactjs,为什么我会得到[对象承诺]?我想获取函数getUrl返回的URL 这是我的代码: <Link href={getUrl()}> 'show show show' </Link> const getUrl = async () => { return await getUrltoGo() } “表演” const getUrl=async()=>{ 返回等待getUrltoGo() } 在该函数中,我需要执行等待对数据库的请求 您需要一个自定义组件来

为什么我会得到
[对象承诺]
?我想获取函数
getUrl
返回的URL

这是我的代码:

<Link href={getUrl()}>
  'show show show'
</Link>

const getUrl = async () => { 
  return await getUrltoGo()
}

“表演”
const getUrl=async()=>{
返回等待getUrltoGo()
}
在该函数中,我需要执行
等待
对数据库的请求


您需要一个自定义组件来处理此问题,下面是一个使用挂钩的示例(自定义它以满足您的需要,或者如果挂钩不可用,则使用类)

constaynlink=({text})=>{
常量[href,setHref]=useState(“”)
useffect(异步()=>{
const url=wait getUrltoGo();
setHref(url)
},[正文])
返回{text}
}
用法:

<AsyncLink text="show show show" />

您需要一个自定义组件来处理这个问题,下面是一个使用钩子的示例(定制它以满足您的需要,如果钩子不可用,则使用类)

constaynlink=({text})=>{
常量[href,setHref]=useState(“”)
useffect(异步()=>{
const url=wait getUrltoGo();
setHref(url)
},[正文])
返回{text}
}
用法:

<AsyncLink text="show show show" />

为什么我会得到[目标承诺]?

getUrl
函数等效于:

const getUrl = () => Promise.resolve(url);

// or
const getUrl = () => new Promise(resolve => resolve(url));
我怎样才能让它工作?

您可以将url存储在异步更新的状态:

function Comp() {
  const [url, setUrl] = useState('/#');

  useEffect(()=> getUrl().then(setUrl));

  return (<Link href={url}>'show show show'</Link>);
}
函数Comp(){
const[url,setUrl]=useState('/#');
useffect(()=>getUrl().then(setUrl));
返回(“显示”);
}

为什么我会得到[目标承诺]?

getUrl
函数等效于:

const getUrl = () => Promise.resolve(url);

// or
const getUrl = () => new Promise(resolve => resolve(url));
我怎样才能让它工作?

您可以将url存储在异步更新的状态:

function Comp() {
  const [url, setUrl] = useState('/#');

  useEffect(()=> getUrl().then(setUrl));

  return (<Link href={url}>'show show show'</Link>);
}
函数Comp(){
const[url,setUrl]=useState('/#');
useffect(()=>getUrl().then(setUrl));
返回(“显示”);
}

typo,更新答案typo,更新答案