React.js是否要求应用程序为单页应用?

31

我正在学习 React.js,我的问题很简单:如果我使用 React,我的应用程序是否必须是单页面应用程序?

如果不需要,那么我如何控制组件以外的部分?通过 FLUX 吗?还有其他标准方法吗?

如果需要,那么是否有任何库可以在 React 客户端执行权限/访问验证?

非常感谢!


1
你说的“客户端权限/访问验证”是什么意思?你希望任何用户身份验证都在服务器端完成。 - Mark
还有,你说的“控制组件之外的部分”是什么意思? - Mark
不,应用程序不必是单页面。 - Mark
抱歉,权限/访问意味着授权。基本上,当您访问某个页面但没有权限查看时,您会被重定向到登录页面或者看到“拒绝访问”的页面 - 对于Angular来说,类似于这样:https://github.com/Illniyar/visor。通过外部控制,我指的是API,如果不是单页应用程序,则可以使用该API对页面范围内的这些控件执行某些操作。 - Dmitry Istomin
1个回答

24
React应用程序不一定是单页面应用程序。React提供了一种以具有特定呈现逻辑的类的方式来模拟HTML的方法,但不会强制施加任何特定的应用程序逻辑,例如单页与多页。 我还不太确定我是否理解了你其他问题的含义,但我认为你基本上在询问如何将react应用程序建模为多页应用程序。有许多方法,但其中一种是按以下方式组织文件:
./app --> main page for your app
    ./app/page1/ --> page 1 of your app
    ./app/page2/ --> page 2 of your app
    ...

通过这种方式,每个“页面”会包含一个独立的React项目。你的主应用页面可以包含加载这些页面的超链接,或者在JavaScript代码中异步加载它们。

编辑:问题在评论中得到了澄清:如何使React组件因页面上的某些操作而更改

假设React组件B包含在React组件A中。用户按下位于React组件B中的按钮B,并在按下时调用React组件B中的回调B,并且此点击应触发React组件A中的一些操作。回调B应该以某种方式通知React组件A发生了变化。

在这里,你可以根据自己的选择进行处理。你可以让React组件B发出一个React组件A听取的更改(并相应地重新渲染),或者你可以使用FLUX模型。在FLUX模型中,React组件B将向某个状态存储库发出状态更改,从而触发事件的发出。 React组件A需要为此事件设置一个事件回调函数,当React组件B发出它时,React组件A会对其做出反应。


谢谢您的回复。让我澄清一下我的意思。由于我没有太多使用React的经验,我认为组件就像一个具有API的jQuery插件。如果我的页面是在后端组装的,并且,假设我按下一个按钮,那么我如何要求React组件为我执行某些操作?它不能像jQuery插件那样公开API。我知道可能可以通过FLUX实现,但这是唯一的方法吗?我确定我在这里理解了什么,但我不确定是什么... - Dmitry Istomin
你的意思是每个页面都有自己的组件吗?我理解得对吗? - Dmitry Istomin
是的,在这个模型中,每个页面都会有自己的组件(很可能有多个子组件)。我会在我的原始答案中回答你关于如何让React“反应”到事物的第二个问题。 - nmio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接