小编Ale*_*lex的帖子

避免子组件更新父状态时父组件重新渲染,

在我们的反应应用程序中,我们有父子组件。子组件调用父方法来更新父状态值。这是示例代码

//父组件

const parent = ({ items }) => {
    const [information, setInformation] = useState([]);
    const updateParentInformation = (childUpdate) => {
         setInformation(information + childUpdates)
    }
    return (
        <div>
            <div>{information}</div>
            ...
            {items.map((item) => {
                return (
                    <ChildComponent item={item} updateParentInformation={updateParentInformation} />
            )})}
        </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

//子组件

const ChildComponent = ({ item, updateParentInformation }) => {
    useEffect(() => {
        const cardInformation = calculateCardInformation(item)
        updateParentInformation(cardAmpScripts)
     }, [item])
    return (
        <div>
            .....
        </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

因此子组件调用父组件的 updateParentInformation 函数来更新父组件的状态,从而重新渲染父组件。我在这里有几个问题

  1. 在某些情况下,我们可能有100-150个子组件,在这种情况下我们的父母会重新渲染很多,如何避免这种情况。我们可以通过这段代码来避免这种情况

    ....
     let recievedUpdates = 0
     const …
    Run Code Online (Sandbox Code Playgroud)

reactjs use-effect use-ref

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

更新和删除哪个快?

我正在将 mongoDB 用于应用程序。该应用需要高频率的读取、写入和更新。

我只关心更新和删除功能。这两个哪个快。我正在根据一个属性对集合建立索引。更新和删除都满足了我的目的,但我不确定哪一个是完美的并且具有更好的性能。

mongodb

5
推荐指数
1
解决办法
3954
查看次数

Redis 连接关闭错误

尽管我执行了以下操作,但我还是收到连接异常(在最后给出):

创建 Jedis 实例时,我将超时字段设置为 1 小时 (60*60*1000)。我也用0试过了,还是不行。

当我在 7 分钟后检查日志时,我注意到了这一点,尽管我认为异常会更早发生(在 300 秒时)。为什么我总是得到它?知道为什么吗?

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: It seems like server has closed the connection.
    at redis.clients.util.RedisInputStream.readLine(RedisInputStream.java:90)
    at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:111)
    at redis.clients.jedis.Protocol.process(Protocol.java:64)
    at redis.clients.jedis.Protocol.read(Protocol.java:127)
    at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199)
    at redis.clients.jedis.BinaryJedis.smembers(BinaryJedis.java:1187)
Run Code Online (Sandbox Code Playgroud)

redis jedis

5
推荐指数
1
解决办法
2万
查看次数

在实时生产应用程序中使用Redis是否可取?

我正在开发一个Crawling应用程序,我需要非常快速的插入和选择数据库.我找到了Redis,它解决了我的目的.我的问题是"在实时生产应用程序中使用Redis是否明智?".我读了一些博客,他们认为Redis不可靠.请建议.

redis

5
推荐指数
1
解决办法
2654
查看次数

如何使用Android导航抽屉实现两级菜单?

我们如何使用Android导航抽屉实现两级菜单.它应该像这样工作1.当用户打开导航抽屉时,专利菜单将可见.(屏幕截图1)2.用户点击特定项目后.与该项目相关联的子菜单将打开,滑动生效[父菜单将向左滑动,子菜单将从右侧滑动显示],并带有返回选项.(屏幕截图2) 在此输入图像描述在此输入图像描述 我尝试了使用ListItem可见性等不同的解决方案.

android android-fragments

5
推荐指数
0
解决办法
821
查看次数

Spring Boot Multiple Databse:没有类型为EntityManagerFactoryBuilder的合格Bean

我们的Spring Boot应用程序中有两个数据库,分别称为source和target。这是那些的配置

源配置

package com.alex.myapp.config;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "sourceManagerFactory",
        transactionManagerRef = "sourceTransactionManager",
        basePackages = {"com.alex.myapp.source.repository"}
)
public class SourceDbConfiguration {

    @Autowired
    private Environment env;

    @Primary
    @Bean(name = "sourceManagerFactory")
    public LocalContainerEntityManagerFactoryBean
    sourceManagerFactory(EntityManagerFactoryBuilder builder) {
        LocalContainerEntityManagerFactoryBean em = builder
                .dataSource(sourceDataSource())
                .packages("com.alex.myapp.source.entity")
                .persistenceUnit("source")
                .build();
        return em;
    }

    @Primary
    @Bean
    public DataSource …
Run Code Online (Sandbox Code Playgroud)

java spring-data-jpa spring-boot

4
推荐指数
1
解决办法
4005
查看次数

使用Angular UI哪个更好的REST或SOAP?

我们正在使用面向服务的体系结构(SAO)开发一个应用程序,我们使用Angular JS作为前端.服务将使用Java编写.目前我们正在讨论是否应该使用REST服务或SOAP服务.我知道两者都有优点和缺点但哪一个最适合我们的情景,我们不清楚.

问候,亚历克斯

rest soap web-services

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

使用OOPS设计数据库表架构?

通常,我们首先检查项目要求并设置表,然后进行1/2/3-NF标准化.

我不喜欢这种方式,因为它不是面向对象的方式.那么任何机构都可以分享我们如何使用OOP来设计复杂的表模式/关系?

即使是链接/书籍也是受欢迎的.这对我来说非常重要.

谢谢

database architecture oop database-design

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

getTargetFragment 返回 Null

我的应用程序中有父片段和对话框片段。单击按钮父片段打开对话框片段。这是我的 ParentFragment 类。

public class ParentFragment extends Fragment {
........
........
    public class ButtonClickListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            Fragment prev = getFragmentManager().findFragmentByTag("dialog");
            if (prev != null) {
                ft.remove(prev);
            }
            MyDialogFragment newFragment = new MyDialogFragment();
            newFragment.setTargetFragment(ParentFragment.this, 0);
            newFragment.show(getFragmentManager(), "dialog");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这是 MyDialogFragment 类

public class MyDialogFragment extends DialogFragment {
..........
public MyDialogFragment() {
            parentFragment = (ParentFragment)getTargetFragment();

        }
...........
...........
}
Run Code Online (Sandbox Code Playgroud)

当 MyDialogFragment 类中的 getTargetFragment 总是返回 null 时。

android android-fragments

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

MySql软删除

我有一个现有的应用程序(使用MySQL DB).

我刚刚得到一个新的要求,我需要从主要实体中删除一些记录.我不想在这里应用硬删除作为整个应用程序的风险.如果我使用软删除,我必须添加另一个字段is_deleted,因为我必须更新我的所有查询(例如is_deleted ='0').

如果有更智能的方法来处理这种情况,请告诉我.如果我引入一个新标志来处理删除,我必须在一半的查询中进行更改.

mysql

0
推荐指数
1
解决办法
2298
查看次数