我有以下代码
import { RootStoreState, ProductStoreSelectors} from 'src/app/stores';
this.store$.pipe(select(ProductStoreSelectors.getSelectedProduct())).subscribe((value) => {
console.log(value)
})
或者我也尝试过
this.store$.select(ProductStoreSelectors.getSelectedProduct).subscribe((value) => {
console.log(value)
}),
基本上,我想订阅我的状态并在商店中的selectedProduct更改时触发一个函数。
export const featureAdapter: EntityAdapter<IProduct> = createEntityAdapter<IProduct>({
selectId: model => model.id,
});
export const selectProductState: MemoizedSelector<object, State> = createFeatureSelector<State>('products');
export const getSelectedProduc = () => createSelector(
selectProductState,
(state: State) => state.selectedProduct
);
并且我的商店是选择了一个商品的EntityState
export interface State extends EntityState<IProduct> {
selectedProduct: IProduct;
}
但是问题是,
控制台日志会向我返回一个函数,即使编译器说它是IProduct
function memoized() {
if (!lastArguments) {
lastResult = projectionFn.apply(null, arguments);
lastArguments = arguments;
return lastResult;
}
if (!isArgumentsChanged(arguments, lastArguments, isArgumentsEqual)) {
return lastResult;
}
lastArguments = arguments;
var newResult = projectionFn.apply(null, arguments);
if (isResultEqual(lastResult, newResult)) {
return lastResult;
}
lastResult = newResult;
return newResult;
}