I need to access Redux's data in a custom block in Blockly, because one of the dropdown form fields has options from redux.
export const form_select = {
init(this: Block) {
this.setColour(160)
this.setTooltip('้ๆฉ่กจๅ')
this.appendDummyInput()
.appendField('้ๆฉ่กจๅ')
// this
.appendField(new FieldDropdown([]), 'FORMID')
this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp')
this.setOutput(true)
},
}
Another problem is that FieldDropdown requires that a non-empty array must be passed, otherwise it will directly report an error, but my data may be empty, which is unavoidable.
I know of an ungraceful way to modify the private property menuGenerator_ directly, or inherit FieldDropdown and provide the setOptions method, and then modify the options after each redux data change. But this doesn't update Blockly immediately until I reopen the component. I wonder if there is a better solution, after all, this step is an essential step to incorporate Blockly into React.