diff --git a/packages/react-intersection-observer/src/InView.tsx b/packages/react-intersection-observer/src/InView.tsx
index d130060a..ab159dc5 100644
--- a/packages/react-intersection-observer/src/InView.tsx
+++ b/packages/react-intersection-observer/src/InView.tsx
@@ -91,6 +91,7 @@ export class InView extends React.Component<
prevProps.scrollMargin !== this.props.scrollMargin ||
prevProps.root !== this.props.root ||
prevProps.threshold !== this.props.threshold ||
+ prevProps.triggerOnce !== this.props.triggerOnce ||
prevProps.skip !== this.props.skip ||
prevProps.trackVisibility !== this.props.trackVisibility ||
prevProps.delay !== this.props.delay
diff --git a/packages/react-intersection-observer/src/__tests__/InView.test.tsx b/packages/react-intersection-observer/src/__tests__/InView.test.tsx
index 213a51cf..18624b9b 100644
--- a/packages/react-intersection-observer/src/__tests__/InView.test.tsx
+++ b/packages/react-intersection-observer/src/__tests__/InView.test.tsx
@@ -144,6 +144,34 @@ test("Should unobserve when triggerOnce comes into view", () => {
expect(instance.unobserve).toHaveBeenCalled();
});
+test("Should resume observing when triggerOnce is disabled", () => {
+ const callback = vi.fn();
+ const { rerender } = render(
+
+ Inner
+ ,
+ );
+
+ mockAllIsIntersecting(true);
+ expect(callback).toHaveBeenLastCalledWith(
+ true,
+ expect.objectContaining({ isIntersecting: true }),
+ );
+
+ rerender(
+
+ Inner
+ ,
+ );
+ callback.mockClear();
+ mockAllIsIntersecting(false);
+
+ expect(callback).toHaveBeenLastCalledWith(
+ false,
+ expect.objectContaining({ isIntersecting: false }),
+ );
+});
+
test("Should unobserve when unmounted", () => {
const { container, unmount } = render(Inner);
const instance = intersectionMockInstance(container.children[0]);