mirror of https://github.com/sveltejs/svelte
parent
6bf77a6451
commit
d727a0d6e5
@ -0,0 +1 @@
|
||||
<div>Sub</div>
|
||||
@ -0,0 +1,11 @@
|
||||
export default {
|
||||
skip_if_ssr: true,
|
||||
skip_if_hydrate_from_ssr: true,
|
||||
compileOptions: {
|
||||
dev: true
|
||||
},
|
||||
props: {
|
||||
selected: false
|
||||
},
|
||||
error: 'this={...} of <svelte:component> should specify a Svelte component.'
|
||||
};
|
||||
@ -0,0 +1,9 @@
|
||||
<script>
|
||||
import Sub from './Sub.svelte';
|
||||
export let selected;
|
||||
let banana = {};
|
||||
let component = banana;
|
||||
$: selected ? component = Sub : component = banana;
|
||||
</script>
|
||||
|
||||
<svelte:component this={component} />
|
||||
@ -1,11 +1,8 @@
|
||||
export default {
|
||||
skip_if_ssr: true,
|
||||
skip_if_hydrate_from_ssr: true,
|
||||
compileOptions: {
|
||||
dev: true
|
||||
},
|
||||
props: {
|
||||
selected: false
|
||||
},
|
||||
error: 'this={...} of <svelte:component> should specify a Svelte component.'
|
||||
error: 'component is not a constructor'
|
||||
};
|
||||
|
||||
@ -0,0 +1 @@
|
||||
<div>Sub</div>
|
||||
@ -0,0 +1,19 @@
|
||||
export default {
|
||||
compileOptions: {
|
||||
dev: true
|
||||
},
|
||||
props: {
|
||||
componentName: 'Sub'
|
||||
},
|
||||
html: '<div>Sub</div>',
|
||||
test({ assert, component, target }) {
|
||||
component.componentName = 'Proxy';
|
||||
assert.htmlEqual(target.innerHTML, '<div>Sub</div>');
|
||||
try {
|
||||
component.componentName = 'banana';
|
||||
throw new Error('Expected an error');
|
||||
} catch (err) {
|
||||
assert.equal(err.message, 'this={...} of <svelte:component> should specify a Svelte component.');
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,14 @@
|
||||
<script>
|
||||
import Sub from './Sub.svelte';
|
||||
export let componentName = 'Sub';
|
||||
let proxy = new Proxy(Sub, {});
|
||||
let banana = {};
|
||||
let component;
|
||||
$: {
|
||||
if (componentName === 'Sub') component = Sub;
|
||||
else if (componentName === 'Proxy') component = proxy;
|
||||
else component = banana;
|
||||
};
|
||||
</script>
|
||||
|
||||
<svelte:component this={component} />
|
||||
@ -1,16 +1,16 @@
|
||||
export default {
|
||||
compileOptions: {
|
||||
dev: true
|
||||
},
|
||||
props: {
|
||||
selected: true
|
||||
componentName: 'Sub'
|
||||
},
|
||||
test({ assert, component }) {
|
||||
html: '<div>Sub</div>',
|
||||
test({ assert, component, target }) {
|
||||
component.componentName = 'Proxy';
|
||||
assert.htmlEqual(target.innerHTML, '<div>Sub</div>');
|
||||
try {
|
||||
component.selected = false;
|
||||
component.componentName = 'banana';
|
||||
throw new Error('Expected an error');
|
||||
} catch (err) {
|
||||
assert.equal(err.message, 'this={...} of <svelte:component> should specify a Svelte component.');
|
||||
assert.equal(err.message, 'component is not a constructor');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,9 +1,14 @@
|
||||
<script>
|
||||
import Sub from './Sub.svelte';
|
||||
export let selected;
|
||||
export let componentName = 'Sub';
|
||||
let proxy = new Proxy(Sub, {});
|
||||
let banana = {};
|
||||
let component = banana;
|
||||
$: selected ? component = Sub : component = banana;
|
||||
let component;
|
||||
$: {
|
||||
if (componentName === 'Sub') component = Sub;
|
||||
else if (componentName === 'Proxy') component = proxy;
|
||||
else component = banana;
|
||||
};
|
||||
</script>
|
||||
|
||||
<svelte:component this={component} />
|
||||
|
||||
Loading…
Reference in new issue