Pattern-matching callbacks without outputs?

I want to have dropdown menus table cells. The row id, the column id (which dropdown) and the dropdown selection need to become inputs to a callback that executes a python function then does nothing else (i.e., raise PreventUpdate). As long as the dropdown shows the selected value no output is needed.

Something like this:

<select name="rowdropx" onchange="location = this.value;">
 <option value="/setvalue/rowid/1">1</option>
 <option value="/setvalue/rowid/2">2</option>
 <option value="/setvalue/rowid/3">3</option>

was what I was hoping for (with “rowid” set to the row id in each dropdown), and then using @server.route to handle the selection. But that doesn’t work with dash, and even if it did I don’t see how to have a @server.route endpoing that can modify an output, as some of the dropdown actions need to do.

Pattern-matching callbacks looked good, but you can’t omit the output, and you can’t have a single dummy hidden div for the output that they all share. I could create a hidden div with a matching id for every dropdown I guess. None of them would be used, and there would be hundreds or even thousands of them on the page.

But is that the best I can do? If so, would it scale to thousands of dropdowns and corresponding hidden divs on a page?

Is there another approach I should be looking at?

A related but more general question would be whether there are guidelines for using Dash with a RESTful API. I keep hitting brick walls on this. @server.route is great for matching RESTful URLs, but it doesn’t help if the action has an output, and it conflicts with also having a callback triggered on dcc.location.

Trying to use a single callback off of dcc.location and doing the URL parsing and branching in that function becomes unwieldy because different actions have different outputs.