Код: Выделить всё
@Component({
selector: 'app-root',
imports: [Child, FormsModule],
template: `
User Details
@if(resource.value(); as user) {
Title: {{user.title}}
}
Reload User Data
`,
})
export class App {
http = inject(HttpClient);
id = signal(1);
resource: ResourceRef = rxResource({
request: () => this.id(),
loader: ({ request: id }: any) =>
this.http.get(
`https://jsonplaceholder.typicode.com/todos/${id}`
),
});
refresh() {
this.resource.reload();
}
}
Код: Выделить всё
@Component({
selector: 'app-like-button',
imports: [FormsModule],
template: `
Child
likes: {{likes()}}
Like
Dislike
`,
})
export class Child {
< /code>
// local state for this component
likes: ModelSignal = model.required();
constructor() {
effect(() => {
const likesCount = this.likes();
// trigger an API call to save the like button press:
console.log(likesCount);
});
}
like() {
this.likes.update((likesPrev: number) => likesPrev + 1);
}
unLike() {
this.likes.update((likesPrev: number) => likesPrev - 1);
}
}
Проблема в том, что я использую эффект, который реагирует на Likes изменения сигнала. Таким образом, во время инициализации называется вызов API put , который не требуется.
demo
- это то, что вызов API (представлен console.log ) не должен стрелять при начальной нагрузке. /п>
Подробнее здесь: https://stackoverflow.com/questions/794 ... input-sign