gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 15:06:33 24 4
gpt4 key购买 nike

我对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com