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,更新答案