cheesestringer
cheesestringer
PD🧩 Plasmo Developers
Created by cheesestringer on 8/6/2024 in #👟framework
Overriding the default renderer
I'm trying to override the default renderer so I can use a custom mutation observer (clicking on next page on the SPA does a scroll to top so I want to wait for it to finish to stop 10 components all requesting data at once). When using an inline anchor, I can see the anchor appearing with a type of inline, but the createContainer seems to throw an exception with: TypeError: Cannot read properties of undefined (reading 'type'). When using an inline anchor list I can't see anything being logged to the console. Am I doing something wrong for this type error to appear even though the anchor seems to have a type? How do I override the default renderer for an inline anchor list?
export const getInlineAnchor: PlasmoGetInlineAnchor = async () => document.querySelector<HTMLElement>('query');

export const getInlineAnchorList: PlasmoGetInlineAnchorList = async () => document.querySelectorAll<HTMLElement>('another query');

export const render: PlasmoRender<PlasmoCSUIJSXContainer> = async (
{
anchor,
createRootContainer
},
_,
InlineCSUIContainer
) => {
// Nothing is logged when using a page with matching getInlineAnchorList results.
// Starts the render for getInline anchor results but throws a type error.

console.log('Creating root container');
console.log(anchor); // anchor appears and has a type of inline
const rootContainer = await createRootContainer();
// Exception thrown: TypeError: Cannot read properties of undefined (reading 'type')

console.log('About to create the root');
const root = createRoot(rootContainer);
root.render(
<InlineCSUIContainer anchor={anchor}>
<CustomUi anchor={anchor} />
</InlineCSUIContainer>
);
};
export const getInlineAnchor: PlasmoGetInlineAnchor = async () => document.querySelector<HTMLElement>('query');

export const getInlineAnchorList: PlasmoGetInlineAnchorList = async () => document.querySelectorAll<HTMLElement>('another query');

export const render: PlasmoRender<PlasmoCSUIJSXContainer> = async (
{
anchor,
createRootContainer
},
_,
InlineCSUIContainer
) => {
// Nothing is logged when using a page with matching getInlineAnchorList results.
// Starts the render for getInline anchor results but throws a type error.

console.log('Creating root container');
console.log(anchor); // anchor appears and has a type of inline
const rootContainer = await createRootContainer();
// Exception thrown: TypeError: Cannot read properties of undefined (reading 'type')

console.log('About to create the root');
const root = createRoot(rootContainer);
root.render(
<InlineCSUIContainer anchor={anchor}>
<CustomUi anchor={anchor} />
</InlineCSUIContainer>
);
};
3 replies