如何从 python 中的字典数组中获取 javascript 中的对象数组?

How to get array of objects in javascript from an array of dictionaries in python?

我正在尝试使用 python 中的字典数组作为自定义破折号组件的参数,并将其用作对象数组

在 python 中:

audioList_py = [
    {
        "name": "random",
        "singer": 'waveGAN\'s music',
        "cover":
          'link_1.jpg',
        "musicSrc":
          'link_1.mp3',
    },
    {
        "name": "random",
        "singer": 'waveGAN\'s music',
        "cover":
          'link_2.jpg',
        "musicSrc":
          'link_2.mp3',
    },

 ... etc
]

在Javascript中:

audioList1_js = [
        {
            name: "random",
            singer: 'waveGAN\'s music',
            cover:'link_1.jpg',
            musicSrc: 'link_1.mp3',
        },
        {
            name: "random",
            singer: 'waveGAN\'s music',
            cover: 'link_2.jpg',
            musicSrc: 'link_2.mp3',
        },

     ... etc
    ]

这里是短划线自定义组件的 javascript 代码片段:

export default class MusicComponent extends Component {
    render() {
      const {id, audioLists} = this.props;
        return (
            <div>
                <h1>{id}</h1>
                <ReactJkMusicPlayer audioLists={audio_list}/>,
            </div>
        );
    }
}

MusicComponent.defaultProps = {};

MusicComponent.propTypes = {
    /**
     * The ID used to identify this component in Dash callbacks.
     */
    audios: PropTypes.array,
    id: PropTypes.string,

};

并在python中使用生成的组件:

app = dash.Dash(__name__)
app.layout = html.Div([
    music_component.MusicComponent(audios=audioList_py),
    html.Div(id='output'),
    ... etc
])

但是我得到了:

TypeError: The `music_component.MusicComponent` component (version 0.0.1) received an unexpected keyword argument: `audios`Allowed arguments: id

我做错了什么?

任何帮助或建议将不胜感激,非常感谢。

确保在对自定义 React 组件进行更改后 运行 npm run build。使用这些 proptypes 你不应该得到那个错误。如果我删除 audios proptype,我可以重现该错误。

此外,您将值传递给 audios 属性:

music_component.MusicComponent(audios=audioList_py)

但您尝试从道具中检索 audioLists

const {id, audioLists} = this.props;

将此更改为:

const {id, audios} = this.props;

演示

export default class MusicComponent extends Component {
    render() {
        const {id, audios} = this.props;
        return (
            <div>
                <h1>{id}</h1>
                <ReactJkMusicPlayer audioLists={audios} />
            </div>
        );
    }
}

MusicComponent.defaultProps = {};

MusicComponent.propTypes = {
    /**
     * The ID used to identify this component in Dash callbacks.
     */
    id: PropTypes.string,

    audios: PropTypes.array,
};

问题已解决,我应该 运行 : npm run build:backends 为组件生成 Python、R 和 Julia class 文件,但我正在执行 npm run build:js 并且此命令仅生成 JavaScript 包(不知道新道具)。

并将组件中的音频 属性 设置为如下所示:

MusicComponent.defaultProps = {audios: audioList1};

MusicComponent.propTypes = {
    id: PropTypes.string,
    audios: PropTypes.arrayOf(PropTypes.objectOf(PropTypes.string)).isRequired
};