【发布时间】:2015-06-03 22:01:52
【问题描述】:
我正在对现有网站的多个部分进行处理,并将它们与 Webpack 和 React 捆绑在一起。现有网站不使用任何类型的 API,并使用 PHP 输出其大部分标记。
我的第一个项目是采用一种在网站上多个地方使用的表单并将其移动到 React 组件中。此表单有时会预先填充数据库中的数据,我不确定将这些数据放入 React 组件的最简洁方法。
以前表单只是用 PHP 和几个 <?php echo $FormFieldValue ?> 块输出。我需要将 PHP 数据放入 React 组件中。
目前我正在这样做:
在 PHP 中,我创建了一个数组来表示我可以从 API 中获得什么:
<?php
$formData = array(
'FirstName' => $theUser->FirstName,
'LastName' => $theUser->LastName,
'EmailAddress' => $theUser->EmailAddress,
'Company' => $theUser->Company
);
?>
然后我在 $el 上的 data- 属性中将其转换为 JSON,React 组件被注入:
<div data-props='<?php echo json_encode($billingInfoFormData) ?>'></div>
我的组件:
var BillingInfo = React.createClass({
getInitialState() {
return this.props.dataProps
},
render() { … }
})
最后,渲染它:
var $domEl = $('[data-billing-info-form]')
var BillingInfoForm = require('./components/Forms/BillingInfo.jsx')
var BillingInfoFormDom = React.render(
<BillingInfoForm
dataProps = {$domEl.data('props')}
formTitle = 'Billing Info' />,
$domEl.get(0)
)
现在是这样。我知道用道具填充状态被认为是禁忌。所以我在这里,转向 Stack Overflow 看看我的选择是什么。
建议??
【问题讨论】:
-
为什么不将
<script>标签中所需的数据作为“全局”变量存储为$billingInfoFormData中的JSON值并将其读入BillingInfoForm?我不明白您为什么要将数据放入div? -
主要是因为我不想在不立即将数据显式附加到某个东西的情况下将数据存储在全局命名空间中。
-
嗯,这就是大多数同构 React 应用程序的实现方式。因此,这是一种非常常见的模式(在其他框架和库中也很常见)。
-
有没有想过这个?
标签: javascript json reactjs webpack