Html 反应-如何知道组件是否同步位于链接元素中?
HTML中不允许嵌套链接。 对于以下组件:Html 反应-如何知道组件是否同步位于链接元素中?,html,reactjs,Html,Reactjs,HTML中不允许嵌套链接。 对于以下组件: 函数MyComponent(){ 返回( {/* ... */} ); } MyComponent如何同步知道它是否有元素祖先? 因此它可以在第一次渲染时进行调整?这回答了问题的原始版本,该版本已经过编辑 您可以将最近的与Reactref一起使用,以实现以下目的: const SmartLink = ({ href, children }) => { const ref = useRef(null); useEffect(() =&
函数MyComponent(){
返回(
{/* ... */}
);
}
MyComponent
如何同步知道它是否有
元素祖先?因此它可以在第一次渲染时进行调整?这回答了问题的原始版本,该版本已经过编辑
您可以将
最近的
与Reactref
一起使用,以实现以下目的:
const SmartLink = ({ href, children }) => {
const ref = useRef(null);
useEffect(() => {
if (ref.current?.parentElement.closest("a")) {
throw new Error("<a /> elements can't be nested");
}
}, []);
return (
<a ref={ref} href={href}>
{children}
</a>
);
};
constsmartlink=({href,children})=>{
const ref=useRef(null);
useffect(()=>{
if(参考当前?.parentElement.closest(“a”)){
抛出新错误(“
);
};
Nice。但要进行此检查,必须在DOM中呈现元素(自动生成html错误)。并且他只能在第二次呈现时更正组件。是否有办法在第一次呈现时同步(如上下文)知道?不平凡。也许如果你想尝试混淆视听
React.\u秘密\u内部\u不使用\u或者\u你将被解雇
或其他什么(是的,这是React对象的真实属性名称)。我可以问一下您为什么要这样做吗?似乎在开发/调试过程中很方便,但在生产过程中不需要依赖,所以为什么“第一次同步渲染”很重要?