Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] allow_duplicate not working with clientside_callback #2467

Closed
T4rk1n opened this issue Mar 17, 2023 · 1 comment · Fixed by #2471
Closed

[BUG] allow_duplicate not working with clientside_callback #2467

T4rk1n opened this issue Mar 17, 2023 · 1 comment · Fixed by #2471

Comments

@T4rk1n
Copy link
Contributor

T4rk1n commented Mar 17, 2023

Thanks for allow_duplicate, it's a very nice addition.
Everything works well, except for clientside_callback. Support for clientside_callback was supposed to be? When adding allow_duplicate, an error occurs:

image

If you specify several ouputs(with and without allow_duplicate), then even though there will be an error, the value will be updated for ouput without allow_duplicate, but not for output with allow_duplicate, example:

image

Tell me, am I doing something wrong? Thank you very much.

Full code sample (with one callback, but I think this is enough to show the error):

import dash

from dash import Dash, html, Input, Output

app = Dash(__name__)
app.layout = html.Div(
    children=[
        html.Div(
            children=['Last pressed button: ', html.Span(id='span', children='empty')]
        ),
        html.Button(
            id='button-right',
            children='right'
        )
    ]
)

# NOT WORKING FOR "SPAN", BUT WARKING FOR BUTTON-RIGHT
dash.clientside_callback(
    """
    function(n_clicks){
        return ["right", `right ${n_clicks}`];
    }
    """,
    [
        Output('span', 'children', allow_duplicate=True),
        Output('button-right', 'children')
    ],
    Input('button-right', 'n_clicks'),
    prevent_initial_call=True
)

# WORKING EXAMPLE TO UNDERSTAND HOW IT SHOULD BE (THE ONLY DIFFERENCE IS THAT NO ALLOW_DUPLICATE)
# dash.clientside_callback(
#     """
#     function(n_clicks){
#         return ["right", `right ${n_clicks}`];
#     }
#     """,
#     [
#         Output('span', 'children'),
#         Output('button-right', 'children')
#     ],
#     Input('button-right', 'n_clicks'),
#     prevent_initial_call=True
# )

if __name__ == '__main__':
    app.run_server(debug=True, port=2414)

Originally posted by @FatHare in #2414 (comment)

@leo-smi
Copy link

leo-smi commented Apr 7, 2023

Thank you guys for this fix. It's a great jump for dash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants