javascript - React/Redux 将 props 传递给主组件

标签 javascript reactjs redux

我对 React/Redux 构建中的数据流仍然很困惑。在我的应用程序“中”工作时我相当自在,但我不知道如何将数据从服务器传递到我的应用程序?

我有react-app.php 文件,其中包含article#main-content 元素,它是我的应用程序的基本元素。我想传递一些产品的元素信息。

我该怎么做?

我想提供 article#main-content prop ProductName 但我不知道如何从 React 访问它。

我的猜测是来自 reducer ......但是如何呢?也许我不应该依赖 article#main-content 并传递变量以在 $_GET 参数中使用react?

react-app.php

<link rel="stylesheet" type="text/css" href="/lines-configurator/build/style.css" media="screen"/>
<script async type="text/javascript" src="/lines-configurator/build/bundle.js"></script>

<article id="main-content" productName="My Product">
</article>

应用程序.js:

import React from 'react';
import {render} from 'react-dom';
import {createStore} from 'redux';
import {Provider} from 'react-redux';
import reducer from './reducers/index';

import BoardConfig from './containers/BoardConfigContainer';
import BoardProduct from './containers/BoardProductContainer';

const store = createStore(reducer, window.devToolsExtension && window.devToolsExtension());

render(
    <Provider store={store}>
        <div>
            <BoardConfig />
            <BoardProduct />
        </div>
    </Provider>,
    document.getElementById('main-content')
);

BoardProductContainer.js

import {connect} from 'react-redux';
import BoardProduct from '../components/BoardProductComponent';

export default connect(
    function mapStateToProps(state) {
        return {

        };
    },
    function mapDispatchToProps(dispatch) {
        return {};
    }
)(BoardProduct);

BoardProductComponent.js

import React from 'react';

export default function () {
    return ();
}

BoardProductReducer.js

import * as types from '../constants/constants';
import Immutable from 'immutable';

const initialState = Immutable.Map({});

export default function boardReducer(state = initialState, action) {
    switch (action.type) {
        default:
            return state;
    }
}

最佳答案

您可以从以下位置获取url参数

this.props.location.query

例如:

// http://localhost:3000/?test=1

console.log(this.props.location.query);
/*
{
  test: "1"
}
*/
<小时/>

传递除 $_GET 之外的服务器变量

通常你会调用并执行一个ajax请求并在reducer中返回。

但是由于从一开始你就已经有了一个值,你可以做的就是将 App.js 的代码包装在 start 函数中

export default function start(serverVar) {
    // use serverVar here:
    const store = createStore(reducer, window.devToolsExtension && window.devToolsExtension());

    render(
        <Provider store={store}>
            <div>
                <BoardConfig />
                <BoardProduct />
            </div>
        </Provider>,
        document.getElementById('main-content')
    );
}

更改 webpack 的输出以包括:

library: 'Foo'

在您的 html 文件中添加:

<script type="text/javascript">
  Foo.start('<?php echo $serverVar; ?>');
</script>

或者简单地

忽略上面的所有设置并执行此操作

<script type="text/javascript">
  window.someValue = '<?php echo $serverVar; ?>';
</script>

关于javascript - React/Redux 将 props 传递给主组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689380/

相关文章:

javascript - 从 api 获取的数据不会作为 props 传递给嵌套组件

javascript - 如何立即在IE中通过javascript设置样式

css - Material-UI [v0.x] 悬停样式上的 RaisedButton

reactjs - create-react-app 在 App.js 中生成函数而不是类

javascript - 我应该如何为在 React/Redux 应用程序中作为 props 传递的函数配置 Flow 类型检查?

javascript - 循环 Google 图表数据行

javascript - 如何下载文件名不以扩展名结尾的图像?

reactjs - 在react-native中发送请求 header /授权 axios.post

javascript - React Router + Redux - 在路由更改时调度异步操作?

vue.js - 数据全部存储在vuex好还是redux好?