小编Mic*_*ick的帖子

什么是前端开发中的"乐观更新"

我正在阅读模式介绍redux,那里有以下段落:

...考虑新要求在前端产品开发中变得普遍,例如处理乐观更新,在服务器上呈现,在执行路由转换之前获取数据等等.

我的问题是这里的乐观更新是什么?

html javascript frontend

42
推荐指数
1
解决办法
5621
查看次数

API设计:缓存"部分"嵌套对象

假设我们的学校有一些数据,包括姓名和学生名单,以及有一些数据的学生,包括他们注册的课程和他们学校的参考.在客户端:

  • 我想显示一个显示学校信息的屏幕,其中包括所有学生的名单.
  • 我想显示一个显示学生信息的屏幕,包括他们学校的名称和他们正在学习的课程名称.
  • 我想缓存此信息,以便我可以显示相同的屏幕而无需等待新的提取.我应该能够从学校到学生再回到学校而不再去学校.
  • 我想显示每个屏幕只有一个提取.从学校页面到学生页面可以单独获取,但我应该能够在一次获取中向学校显示学生姓名的完整列表.
  • 我想避免重复数据,这样如果学校名称发生变化,一次更新学校将导致在学校页面和学生页面上显示正确的名称.

是否有一个很好的方法来完成所有这些,或者是否必须解除一些限制?

第一种方法是使用API​​执行以下操作:

GET /school/1

{
    id: 1,
    name: "Jefferson High",
    students: [
        {
             id: 1
             name: "Joel Kim"
        },
        {
             id: 2,
             name: "Chris Green"
        }
        ...
    ]
}


GET /student/1

{
    id: 1,
    name: "Joel Kim",
    school: {
        id: 1,
        name: "Jefferson High"
    }
    courses: [
        {
             id: 3
             name: "Algebra 1"
        },
        {
             id: 5,
             name: "World History"
        }
        ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

这种方法的一个优点是,对于每个屏幕,我们只需要进行一次获取.在客户端,我们可以规范学校和学生,以便他们互相引用ID,然后将对象存储在不同的数据存储中.但是,student嵌套在其中的对象school不是完整对象 - 它不包括嵌套课程,也不包括返回学校的引用.同样,school里面的对象student …

rest api-design data-structures reactjs redux

7
推荐指数
1
解决办法
327
查看次数

EditTextPreference.setText(value) 未按预期更新

我试图阻止用户将空字符串输入EditTextPreference(在示例中,catName)。我使用 aOnPreferenceChangeListener来检测何时对 进行了更改EditTextPreference,如果有更改并且字符串为空,我使用该EditTextPreference.setText()命令重置为旧值。但是,如果我EditTextPreference在 GUI 中重新打开 新值(字符串为空),则新值无法正确显示,如果我返回主应用程序,我可以验证是否将空白值保存到首选项中。

我已验证 if 语句是否按预期执行,并且跟踪旧名称 ( oldCatName) 的参数正在按预期更新。我什至可以catName.getText()setOnPreferenceChangeListener完成执行之前记录该值,并且我总是看到我期望的值(用户设置的新值,当他们输入一个空白值时,它会正确地重置为旧值)。我不确定为什么将值设置EditTextPreference为 不会将值保存到首选项文件或更新 GUI。

public class SettingsActivity extends PreferenceActivity {

    private String oldCatName;
    private EditTextPreference catName;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.settings);

        catName = (EditTextPreference) findPreference("cat_name");
        oldCatName = catName.getText();

        catName.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newVal) {
                final String value = (String) newVal;
                if (value.equals("")) { …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity sharedpreferences edittextpreference

3
推荐指数
1
解决办法
7677
查看次数