Html 反应-如何知道组件是否同步位于链接元素中?

Html 反应-如何知道组件是否同步位于链接元素中?,html,reactjs,Html,Reactjs,HTML中不允许嵌套链接。 对于以下组件: 函数MyComponent(){ 返回( {/* ... */} ); } MyComponent如何同步知道它是否有元素祖先? 因此它可以在第一次渲染时进行调整?这回答了问题的原始版本,该版本已经过编辑 您可以将最近的与Reactref一起使用,以实现以下目的: const SmartLink = ({ href, children }) => { const ref = useRef(null); useEffect(() =&

HTML中不允许嵌套链接。

对于以下组件:

函数MyComponent(){
返回(
{/* ... */}
);
}
MyComponent
如何同步知道它是否有
元素祖先?
因此它可以在第一次渲染时进行调整?

这回答了问题的原始版本,该版本已经过编辑


您可以将
最近的
与React
ref
一起使用,以实现以下目的:

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对象的真实属性名称)。我可以问一下您为什么要这样做吗?似乎在开发/调试过程中很方便,但在生产过程中不需要依赖,所以为什么“第一次同步渲染”很重要?