本文整理匯總了TypeScript中@dojo/framework/stores/Store.Store類的典型用法代碼示例。如果您正苦於以下問題:TypeScript Store類的具體用法?TypeScript Store怎麽用?TypeScript Store使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Store類的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: it
it('should use store from properties when passed', () => {
const store = new Store();
const filterableConfig = [{ id: 'id', title: 'id', filterable: true }];
const h = harness(() =>
w(MockMetaMixin(Grid, mockMeta), {
fetcher: noop,
updater: noop,
columnConfig: filterableConfig,
store,
height: 500
})
);
h.expect(() =>
v('div', { key: 'root', classes: [css.root, fixedCss.rootFixed], role: 'table', 'aria-rowcount': null }, [
v('div', {
key: 'header',
scrollLeft: 0,
classes: [css.header, fixedCss.headerFixed, css.filterGroup],
row: 'rowgroup'
}, [
w(Header, {
key: 'header-row',
columnConfig: filterableConfig,
sorter: noop,
sort: undefined,
filter: undefined,
filterer: noop
})
]),
w(Body, {
key: 'body',
pages: {},
totalRows: undefined,
pageSize: 100,
columnConfig: filterableConfig,
pageChange: noop,
updater: noop,
fetcher: noop,
onScroll: noop,
height: 300
}),
v('div', { key: 'footer' }, [
w(Footer, {
key: 'footer-row',
total: undefined,
page: 1,
pageSize: 100
})
])
])
);
store.apply(
[
{
op: OperationType.REPLACE,
path: new Pointer('_grid/data/pages/page-1'),
value: [{ id: 'id' }]
},
{
op: OperationType.REPLACE,
path: new Pointer('_grid/meta'),
value: {
page: 10,
sort: {
columnId: 'id',
direction: 'asc'
},
filter: {
columnId: 'id',
value: 'id'
},
total: 100
}
}
],
true
);
h.expect(() =>
v('div', { key: 'root', classes: [css.root, fixedCss.rootFixed], role: 'table', 'aria-rowcount': '100' }, [
v('div', {
key: 'header',
scrollLeft: 0,
classes: [css.header, fixedCss.headerFixed, css.filterGroup],
row: 'rowgroup'
}, [
w(Header, {
key: 'header-row',
columnConfig: filterableConfig,
sorter: noop,
sort: {
columnId: 'id',
direction: 'asc'
},
filter: {
columnId: 'id',
value: 'id'
},
//.........這裏部分代碼省略.........
示例2: filterProcess
it('should filter', async () => {
const fetcherStub = stub();
fetcherStub.returns({
data: [{ id: '1' }],
meta: {
total: 10000
}
});
store.apply([{ op: OperationType.REPLACE, path: new Pointer(['grid', 'meta', 'page']), value: 10 }]);
await filterProcess(store)({ filterOptions: { columnId: 'id', value: 'filter' }, id: 'grid', fetcher: fetcherStub });
const pages = store.get(store.path('grid', 'data'));
assert.deepEqual(pages, { pages: { 'page-1': [{ id: '1' }] } });
const meta = store.get(store.path('grid', 'meta'));
assert.deepEqual(meta, {
currentFilter: {
columnId: 'id',
value: 'filter'
},
page: 1,
filter: { id: 'filter' },
fetchedPages: [1],
isSorting: false,
total: 10000
});
});
示例3:
it('Should not fail if the page is already set', () => {
pageChangeProcess(store)({ id: 'grid', page: 2 });
let page = store.get(store.path('grid', 'meta', 'page'));
assert.strictEqual(page, 2);
pageChangeProcess(store)({ id: 'grid', page: 2 });
page = store.get(store.path('grid', 'meta', 'page'));
assert.strictEqual(page, 2);
});
示例4: onRouteChange
function onRouteChange() {
const outlet = store.get(store.path('routing', 'outlet'));
const params = store.get(store.path('routing', 'params'));
if (outlet) {
const link = router.link(outlet, params);
if (link !== undefined) {
router.setPath(link);
}
}
}
示例5: fetcherProcess
it('fetcher should update the page and meta data for request', async () => {
const fetcherStub = stub();
fetcherStub.returns({
data: [{ id: '1' }],
meta: {
total: 10000
}
});
await fetcherProcess(store)({ id: 'grid', page: 2, fetcher: fetcherStub, pageSize: 100 });
const pages = store.get(store.path('grid', 'data'));
assert.deepEqual(pages, { pages: { 'page-2': [{ id: '1' }] } });
const meta = store.get(store.path('grid', 'meta'));
assert.deepEqual(meta, { fetchedPages: [2], total: 10000, pageSize: 100 });
});
示例6:
router.on('outlet', ({ outlet, action }) => {
if (action === 'enter') {
switch (outlet.id) {
case 'user':
if (outlet.isExact()) {
getProfileProcess(store)({ username: outlet.params.username });
fetchFeedProcess(store)({ type: 'user', page: 0, filter: outlet.params.username });
}
break;
case 'favorites':
getProfileProcess(store)({ username: outlet.params.username });
fetchFeedProcess(store)({ type: 'favorites', page: 0, filter: outlet.params.username });
break;
case 'article':
getArticleProcess(store)({ slug: outlet.params.slug });
break;
case 'settings':
getUserSettingsProcess(store)({});
break;
case 'edit-post':
getEditorArticleProcess(store)({ slug: outlet.params.slug });
break;
case 'home':
const isAuthenticated = !!store.get(store.path('user', 'token'));
fetchFeedProcess(store)({ type: isAuthenticated ? 'feed' : 'global', page: 0, filter: '' });
break;
}
} else {
if (outlet.id === 'edit-post') {
clearEditorProcess(store)({});
}
}
});
示例7: sortProcess
it('should sort', async () => {
const fetcherStub = stub();
fetcherStub.returns({
data: [{ id: '1' }],
meta: {
total: 10000
}
});
store.apply([{ op: OperationType.REPLACE, path: new Pointer(['grid', 'meta', 'page']), value: 10 }]);
await sortProcess(store)({ columnId: 'id', direction: 'asc', id: 'grid', fetcher: fetcherStub });
const pages = store.get(store.path('grid', 'data'));
assert.deepEqual(pages, { pages: { 'page-9': [{ id: '1' }], 'page-10': [{ id: '1' }] } });
const meta = store.get(store.path('grid', 'meta'));
assert.deepEqual(meta, {
page: 10,
sort: { columnId: 'id', direction: 'asc' },
fetchedPages: [10, 9],
isSorting: false,
total: 10000
});
});
示例8: updaterProcess
it('Should update item', async () => {
const updaterStub = stub();
store.apply([
{
op: OperationType.REPLACE,
path: new Pointer(['grid', 'data', 'pages', 'page-1']),
value: [{ id: 'A', name: 'bill' }]
}
]);
let pages = store.get(store.path('grid', 'data'));
assert.deepEqual(pages, { pages: { 'page-1': [{ id: 'A', name: 'bill' }] } });
await updaterProcess(store)({
updater: updaterStub,
columnId: 'name',
id: 'grid',
value: 'foo',
page: 1,
rowNumber: 0
});
pages = store.get(store.path('grid', 'data'));
assert.deepEqual(pages, { pages: { 'page-1': [{ id: 'A', name: 'foo' }] } });
});