Opened 11 months ago
Last modified 5 months ago
#62628 new defect (bug)
Server and client directive negation logic should align
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Awaiting Review | Priority: | normal |
| Severity: | normal | Version: | 6.5 |
| Component: | Interactivity API | Keywords: | needs-patch |
| Focuses: | Cc: |
Description
Interactivity API directives allow for a negation prefix !. Values with this prefix should be negated.
The server side and client side negation logic both rely on rudimentary ! negation. This means that the negation logic depends on PHP and JavaScript behavior which do not always agree and cause differences in server/client rendering of the same data.
For example, with this state:
<?php wp_interactivity_state( 'example', array( 'emptyArray' => array(), 'stringZero' => '0', ) );
And the following HTML with directives:
<div data-wp-interactive="example"> <div data-wp-bind--data-test="!state.emptyArray"></div> <div data-wp-bind--data-test="!state.stringZero"></div> </div>
This is the server render render:
<div data-test="true" data-wp-bind--data-test="!state.emptyArray"></div> <div data-test="true" data-wp-bind--data-test="!state.stringZero"></div>
While the client renders the following:
<div data-test="false" data-wp-bind--data-test="!state.emptyArray"></div> <div data-test="false" data-wp-bind--data-test="!state.stringZero"></div>
Change History (3)
Note: See
TracTickets for help on using
tickets.
I've added this to the 6.8 iteration issue.